Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
The save/load file functionality does not work on the Application Processor (AP - non-main thread), even with resource locking. It can only operate on the Boot Strap Processor (BS - main thread).
This PR introduces the capability to save/load files on non-main threads by offloading the actual operations to the main thread.
Detail: https://github.com/orgs/qubic/projects/1?pane=issue&itemId=85821090
Design Features
AsyncLoadFile (AsyncLoadLargeFile)
: Can be called from any thread to load a file. This is a blocking call until the load is complete.AsyncSaveFile (AsyncSaveLargeFile)
: Can be called from any thread to save a file. This can be either a blocking or non-blocking call.flushAsyncFileIOBuffer
: this function performs the save/load operations and also releases the blocking calls of the above two functions.How to use
initFilesystem(pServiceProtocol)
.AsyncLoadFile
,AsyncLoadLargeFile
,AsyncSaveFile
, orAsyncSaveLargeFile
with or without blocking flags, depending on the purpose.flushAsyncFileIOBuffer
.deInitFileSystem
Test. [UPDATED]
Next Step