mirror of
https://github.com/IllusionMan1212/vitasdk-odin.git
synced 2026-10-24 02:12:38 +00:00
464 lines
13 KiB
Odin
464 lines
13 KiB
Odin
package appmgr
|
|
|
|
import "core:c"
|
|
import sce "../common"
|
|
|
|
foreign import appmgr "system:SceAppMgr_stub"
|
|
foreign import appmgrkern "system:SceAppMgrForDriver_stub"
|
|
|
|
foreign appmgr {
|
|
/**
|
|
* Save data on savedata0: partition
|
|
*
|
|
* @param[in] data - Data to save
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataDataSave :: proc(data: ^SceAppMgrSaveDataData) -> c.int ---
|
|
|
|
/**
|
|
* Remove data on savedata0: partition
|
|
*
|
|
* @param[in] data - Data to remove
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataDataRemove :: proc(data: ^SceAppMgrSaveDataDataDelete) -> c.int ---
|
|
|
|
/**
|
|
* Create a savedata slot
|
|
*
|
|
* @param[in] data - Slot data
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataSlotCreate :: proc(data: ^SceAppMgrSaveDataSlot) -> c.int ---
|
|
|
|
/**
|
|
* Get current param of a savedata slot
|
|
*
|
|
* @param[out] data - Slot data
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataSlotGetParam :: proc(data: ^SceAppMgrSaveDataSlot) -> c.int ---
|
|
|
|
/**
|
|
* Set current param of a savedata slot
|
|
*
|
|
* @param[in] data - Slot data
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataSlotSetParam :: proc(data: ^SceAppMgrSaveDataSlot) -> c.int ---
|
|
|
|
/**
|
|
* Delete a savedata slot
|
|
*
|
|
* @param[in] data - Slot data
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrSaveDataSlotDelete :: proc(data: ^SceAppMgrSaveDataSlotDelete) -> c.int ---
|
|
|
|
/**
|
|
* Get Process ID by Title ID
|
|
*
|
|
* @param[out] pid - Process ID
|
|
* @param[in] name - Title ID
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetIdByName :: proc(pid: ^sce.UID, name: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Get Title ID by Process ID
|
|
*
|
|
* @param[in] pid - Process ID
|
|
* @param[out] name - Title ID
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetNameById :: proc(pid: sce.UID, name: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Destroy other apps
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrDestroyOtherApp :: proc() -> c.int ---
|
|
|
|
/**
|
|
* Destroy an application by Title ID
|
|
*
|
|
* @param[in] name - Title ID of the application
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrDestroyAppByName :: proc(name: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Destroy an application by Application ID
|
|
*
|
|
* @param[in] appId - Application ID of the application
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrDestroyAppByAppId :: proc(appId: sce.Int32) -> c.int ---
|
|
|
|
/**
|
|
* Get PID of an application for Shell
|
|
*
|
|
* @param[in] appId - Application ID of the application
|
|
*
|
|
* @return The PID on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetProcessIdByAppIdForShell :: proc(appId: sce.Int32) -> sce.UID ---
|
|
|
|
/**
|
|
* Get a list of running applications
|
|
*
|
|
* @param[out] appIds - Array of running application IDs
|
|
* @param[in] count - Max number of running applications to search
|
|
*
|
|
* @return Number of running applications.
|
|
*/
|
|
sceAppMgrGetRunningAppIdListForShell :: proc(appIds: ^sce.Int32, count: c.int) -> c.int ---
|
|
|
|
/**
|
|
* Get an application state
|
|
*
|
|
* @param[out] appState - State of the application
|
|
* @param[in] len - sizeof(SceAppMgrState)
|
|
* @param[in] version - Version (?)
|
|
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
_sceAppMgrGetAppState :: proc(appState: ^SceAppMgrAppState, len: sce.Size, version: c.uint32_t) -> c.int ---
|
|
|
|
/**
|
|
* Receive system event
|
|
*
|
|
* @param[out] systemEvent - Received system event
|
|
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrReceiveSystemEvent :: proc(systemEvent: ^SceAppMgrSystemEvent) -> c.int ---
|
|
|
|
/**
|
|
* Copies app param to an array
|
|
*
|
|
* @param[out] param - pointer to a 1024 byte location to store the app param
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note App param example: type=LAUNCH_APP_BY_URI&uri=psgm:play?titleid=NPXS10031
|
|
*/
|
|
sceAppMgrGetAppParam :: proc(param: [^]c.char) -> c.int ---
|
|
|
|
/**
|
|
* Obtains the BGM port, even when it is not in front
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
*/
|
|
sceAppMgrAcquireBgmPort :: proc() -> c.int ---
|
|
|
|
/**
|
|
* Release acquired BGM port
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
*/
|
|
sceAppMgrReleaseBgmPort :: proc() -> c.int ---
|
|
|
|
/**
|
|
* Set infobar state
|
|
*
|
|
* @param[in] visibility - Infobar visibility
|
|
* @param[in] color - Infobar color
|
|
* @param[in] transparency - Infobar transparency
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
*/
|
|
sceAppMgrSetInfobarState :: proc(visibility: SceAppMgrInfoBarVisibility, color: SceAppMgrInfoBarColor, transparency: SceAppMgrInfoBarTransparency) -> c.int ---
|
|
|
|
/**
|
|
* Load and start a SELF executable
|
|
*
|
|
* @param[in] appPath - Path of the SELF file
|
|
* @param[in] argv - Args to pass to SELF module_start
|
|
* @param[in] optParam - Optional params
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note SELF file must be located in app0: partition.
|
|
*/
|
|
sceAppMgrLoadExec :: proc(appPath: cstring, argv: [^]cstring, optParam: ^SceAppMgrExecOptParam) -> c.int ---
|
|
|
|
/**
|
|
* Start an application by URI
|
|
*
|
|
* @param[in] flags - Must be 0x20000
|
|
* @param[in] uri - Uri to launch
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note If flags != 0x20000, Livearea is opened.
|
|
*/
|
|
sceAppMgrLaunchAppByUri :: proc(flags: c.int, uri: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Start an application by Title ID
|
|
*
|
|
* @param[in] name - Title ID of the application
|
|
* @param[in] param - The params passed to the application which can be retrieved with ::sceAppMgrGetAppParam
|
|
* @param[in] optParam - Optional params
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrLaunchAppByName2 :: proc(name: cstring, param: cstring, optParam: ^SceAppMgrLaunchAppOptParam) -> c.int ---
|
|
|
|
/**
|
|
* Start an Application by Title ID
|
|
*
|
|
* @param[in] flags - Usually 0x60000
|
|
* @param[in] name - Title ID of the application
|
|
* @param[in] param - The params passed to the application which can be retrieved with ::sceAppMgrGetAppParam
|
|
*
|
|
* @return 0 on success < 0 on error.
|
|
*/
|
|
sceAppMgrLaunchAppByName :: proc(flags: c.int, name: cstring, param: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Start an application by Title ID for Shell
|
|
*
|
|
* @param[in] name - Title ID of the application
|
|
* @param[in] param - The params passed to the application which can be retrieved with ::sceAppMgrGetAppParam
|
|
* @param[in] optParam - Optional params
|
|
*
|
|
* @return Application ID (?)
|
|
*/
|
|
sceAppMgrLaunchAppByName2ForShell :: proc(name: cstring, param: cstring, optParam: ^SceAppMgrLaunchAppOptParam) -> sce.UID ---
|
|
|
|
/**
|
|
* Mount game data
|
|
*
|
|
* @param[in] app_path - example : "ux0:/app/${TITLEID}"
|
|
* @param[in] patch_path - example : "ux0:/patch/${TITLEID}", "invalid:"
|
|
* @param[in] rif_path - If NULL the system will automatically search the rif path. example : "ux0:/license/app/${TITLEID}/${HEX}.rif"
|
|
* @param[in] mount_point - Mountpoint output
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
*/
|
|
sceAppMgrGameDataMount :: proc(app_path: cstring, patch_path: cstring, rif_path: cstring, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Mount application data
|
|
*
|
|
* @param[in] id - App data ID
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note id: 100 (photo0), 101 (friends), 102 (messages), 103 (near), 105 (music), 108 (calendar)
|
|
*/
|
|
sceAppMgrAppDataMount :: proc(id: c.int, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Mount application data by Title ID
|
|
*
|
|
* @param[in] id - App data ID
|
|
* @param[in] titleid - Application title ID
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note id: 106 (ad), 107 (ad)
|
|
*/
|
|
sceAppMgrAppDataMountById :: proc(id: c.int, titleid: cstring, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Get application params from SFO descriptor
|
|
*
|
|
* @param[in] pid - Process ID
|
|
* @param[in] param - Param ID in the SFO descriptor
|
|
* @param[out] string - Param data
|
|
* @param[in] length - Length of the param data
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note param: 6 (contentid) 8 (category), 9 (stitle/title?), 10 (title/stitle?), 12 (titleid)
|
|
*/
|
|
sceAppMgrAppParamGetString :: proc(pid: c.int, param: c.int, string: cstring, length: sce.Size) -> c.int ---
|
|
|
|
/**
|
|
* Get device info
|
|
*
|
|
* @param[in] dev - Device to get info about
|
|
* @param[out] max_size - Capacity of the device
|
|
* @param[out] free_size - Free space of the device
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note dev: ux0:
|
|
*/
|
|
sceAppMgrGetDevInfo :: proc(dev: cstring, max_size: ^c.uint64_t, free_size: ^c.uint64_t) -> c.int ---
|
|
|
|
/**
|
|
* Mount application data (PSPEmu)
|
|
*
|
|
* @param[in] id - App data ID
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note id: 400 (ad), 401 (ad), 402 (ad)
|
|
*/
|
|
sceAppMgrMmsMount :: proc(id: c.int, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Mount PSPEmu virtual memory stick
|
|
*
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note mount_point: ms
|
|
*/
|
|
sceAppMgrPspSaveDataRootMount :: proc(mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Mount working directory
|
|
*
|
|
* @param[in] id - Working directory ID
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note id: 200 (td), 201 (td), 203 (td), 204 (td), 206 (td)
|
|
*/
|
|
sceAppMgrWorkDirMount :: proc(id: c.int, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Mount working directory by Title ID
|
|
*
|
|
* @param[in] id - Working directory ID
|
|
* @param[in] titleid - Application Title ID
|
|
* @param[in] mount_point - Mountpoint to use
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note id: 205 (cache0), 207 (td)
|
|
*/
|
|
sceAppMgrWorkDirMountById :: proc(id: c.int, titleid: cstring, mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Unmount a mountpoint
|
|
*
|
|
* @param[in] mount_point - Mountpoint to unmount
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note Unmount app0: for example to enable write access to ux0:app/TITLEID
|
|
*/
|
|
sceAppMgrUmount :: proc(mount_point: cstring) -> c.int ---
|
|
|
|
/**
|
|
* Convert vs0 path string to a new one usable by applications
|
|
*
|
|
* @param[in] path - Path to convert
|
|
* @param[in] mount_point - Mountpoint to use
|
|
* @param[in] unk - Unknown
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrConvertVs0UserDrivePath :: proc(path: cstring, mount_point: cstring, unk: c.int) -> c.int ---
|
|
|
|
/**
|
|
* Get raw path for a given path
|
|
*
|
|
* @param[out] path - Path to convert
|
|
* @param[in] resolved_path - The input process path
|
|
* @param[in] resolved_path_size - The input process path length
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetRawPath :: proc(path: cstring, resolved_path: cstring, resolved_path_size: c.int) -> c.int ---
|
|
|
|
/**
|
|
* Get the real/resolved path of app0: (where it's actually mounted)
|
|
*
|
|
* @param[in] appId - Use -2 for the current application
|
|
* @param[out] resolved_path - Buffer that will hold the resolved path. It should have enough room to hold 292 characters or it will buffer overflow (noname120).
|
|
*
|
|
* @return 0 on success.
|
|
*/
|
|
sceAppMgrGetRawPathOfApp0ByAppIdForShell :: proc(appId: c.int, resolved_path: [292]c.char) -> c.int ---
|
|
|
|
/**
|
|
* Get memory budget info for a running system application
|
|
*
|
|
* @param[out] info - Info related to the memory budget of the running application.
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*
|
|
* @note This function will always return an error if used in a normal application.
|
|
*/
|
|
sceAppMgrGetBudgetInfo :: proc(info: ^SceAppMgrBudgetInfo) -> c.int ---
|
|
|
|
|
|
/**
|
|
* Get current coredump state for shell
|
|
*
|
|
* @param[out] state - state info output.
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetCoredumpStateForShell :: proc(state: ^SceAppMgrCoredumpState) -> c.int ---
|
|
|
|
sceAppMgrDrmOpen :: proc(param: ^SceAppMgrDrmOpenParam) -> sce.Int32 ---
|
|
|
|
/**
|
|
* Get AppInfo via syscall directly
|
|
*
|
|
* @param[in] unk - unknown maybe titleid
|
|
* @param[out] state - The app state output buffer pointer
|
|
* @param[in] syscall_validity - The syscall validity buffer
|
|
*
|
|
* @return 0 on success, < 0 on error.
|
|
*/
|
|
sceAppMgrGetAppInfo :: proc(unk: cstring, state: ^SceAppMgrAppState) -> sce.Int32 ---
|
|
|
|
_sceSharedFbOpen :: proc(index: c.int, sysver: c.int) -> sce.UID ---
|
|
sceSharedFbClose :: proc(fb_id: sce.UID) -> c.int ---
|
|
sceSharedFbBegin :: proc(fb_id: sce.UID, info: ^SceSharedFbInfo) -> c.int ---
|
|
sceSharedFbEnd :: proc(fb_id: sce.UID) -> c.int ---
|
|
sceSharedFbGetInfo :: proc(fb_id: sce.UID, info: ^SceSharedFbInfo) -> c.int ---
|
|
}
|
|
|
|
foreign appmgrkern {
|
|
/**
|
|
* @brief Kill a process.
|
|
* @param[in] pid The process to kill.
|
|
* @return Zero on success, else < 0.
|
|
*/
|
|
ksceAppMgrKillProcess :: proc(pid: sce.UID) -> c.int ---
|
|
|
|
/**
|
|
* @brief Launch an application for debugging
|
|
*
|
|
* @param[in] path Path to the executable to load
|
|
* @param[in] args Arguments to pass to the executable and to configure appmgr
|
|
* @param[in] arg_size The size of the args passed in
|
|
* @param[in] type Set to 0x80000000 for debugging launch
|
|
* @param[in] param pointer to launch params
|
|
* @param unk unknown, set to nullptr
|
|
*
|
|
* @return pid on success, else < 0.
|
|
*/
|
|
ksceAppMgrLaunchAppByPath :: proc(path: cstring, args: cstring, arg_size: sce.Size, type: c.uint, #by_ptr param: SceAppMgrLaunchParam, unk: rawptr) -> c.int ---
|
|
}
|