Filesystem services: Difference between revisions

New FS commands
No edit summary
Line 6: Line 6:
! Cmd || Name || Arguments || Notes
! Cmd || Name || Arguments || Notes
|-
|-
| 0 || MountCode || u64 TitleId + X descriptor [[#ContentPath]] || Returns an [[#IFileSystem]].
| 0 || OpenCodeFileSystem || u64 TitleId + X descriptor [[#ContentPath]] || Returns an [[#IFileSystem]].
|-
|-
| 1 || IsCodeMounted || u64 ProcessId || Returns a bool (1 if code is mounted).
| 1 || IsArchivedProgram || u64 ProcessId || Returns a bool (1 if code is mounted).
|-
|-
| 2 || [4.0.0+] Initialize || PID descriptor ||
| 2 || [4.0.0+] SetCurrentProcess || PID descriptor ||
|}
|}


Line 20: Line 20:
! Cmd || Name || Notes
! Cmd || Name || Notes
|-
|-
| 0 || [[#SetFsPermissions]] ||
| 0 || [[#RegisterProgram]] ||
|-
|-
| 1 || [[#ClearFsPermissions]] ||
| 1 || [[#UnregisterProgram]] ||
|-
|-
| 2 || [4.0.0+] Initialize ||
| 2 || [4.0.0+] SetCurrentProcess ||
|-
|-
| 256 || [[#SetEnabledProgramVerification]] ||
| 256 || [[#SetEnabledProgramVerification]] ||
|}
|}


== SetFsPermissions ==
== RegisterProgram ==
Takes a storageID, a pid, a titleID, a 0x1C type-A buffer for the [[NPDM#FS_Access_Header| FS Access Header]], and a 0x2C type-A buffer for the [[NPDM#FS_Access_Control| FS Access Control]]
Takes a storageID, a pid, a titleID, a 0x1C type-A buffer for the [[NPDM#FS_Access_Header| FS Access Header]], and a 0x2C type-A buffer for the [[NPDM#FS_Access_Control| FS Access Control]]


Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.
Final FS permissions are stored as (ACI0_perms & ACID_perms). Will panic(svcBreak) when buffer sizes from ipc-rawdata are invalid.


== ClearFsPermissions ==
== UnregisterProgram ==
Takes a pid. Removes registered FS permissions for that PID.
Takes a pid. Removes registered FS permissions for that PID.