-
Notifications
You must be signed in to change notification settings - Fork 465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Meta] external apps improvement roadmap #1872
Comments
Maybe we could take the same functions as zardam did in external, without the tarball fs.
There are I think 4 ways to have bss / data sections in external apps :
|
Regarding the item
I would suggest the following API:
Would it be convenient/sufficient? An important question is (@Ecco, @artaxxx): should the third party app access the records used by the userland - Python scripts, functions, sequences etc - or should we reserve some extensions not to be used by the external apps (and always return the error 'RecordIsProtected' if an external app tries to read/write these records?) |
I don't see yet any functions missing, but I think time will tell us if there are.
It seems a bit overkilled (when third party apps are enabled, we won't have access to exam mode until next reset), and moreover, we already have access to userland RAM, and so userland storage without limitiations. |
Here's a cleaned-up version of the API: typedef enum {
ION_STORAGE_RECORD_ERROR_NONE = 0,
ION_STORAGE_RECORD_ERROR_NAME_TAKEN = 1,
ION_STORAGE_RECORD_ERROR_NON_COMPLIANT_NAME = 2,
ION_STORAGE_RECORD_ERROR_NOT_ENOUGH_SPACE_AVAILABLE = 3,
ION_STORAGE_RECORD_ERROR_RECORD_DOES_NOT_EXIST = 4
} ion_storage_record_error_t;
ion_storage_record_error_t ion_storage_record_create(const char * base_name, const char * extension, const void * data, size_t size);
const void * ion_storage_record_get_data(const char * base_name, const char * extension);
size_t ion_storage_record_get_size(const char * base_name, const char * extension);
void ion_storage_record_destroy(const char * base_name, const char * extension); It doesn't have the ability to find/list records just yet, but this way we avoid having a record type entirely and it makes for a much simpler API 😄 |
List of things necessary to make external really usefull :
be able to use ITCM Ram (usefull for noPIE apps and data section) : [External apps] Allow access to ITCM RAM and reduce slot size #1869don't duplicate the storage section for both slots : [External apps] Allow access to ITCM RAM and reduce slot size #1869avoid suspending when off is pressed, if not stalling (this wouldn't allow the off button to be used for nofrendo NES emulator for instance) : [Ion] Preemtion and circuit breaker changes to allow access to Home and OnOff keys #1874heapRange
anddrawString
functions to access to userland storage-msingle-pic-base -mpic-register=r9 -mno-pic-data-is-text-relative -fPIC
), or, which would be nicer, introduce in the kernel a dynamic relocator and linker (in order to avoid these ugly ISR functions)The text was updated successfully, but these errors were encountered: