Line 443:
Line 443:
| 0x2C || 0x2C || IOSError || IOS_RegisterResourceManager || const char* path, [[#IOSMessageQueueId|IOSMessageQueueId]] id
| 0x2C || 0x2C || IOSError || IOS_RegisterResourceManager || const char* path, [[#IOSMessageQueueId|IOSMessageQueueId]] id
|-
|-
−
| 0x2D || 0x2D || IOSError || [[#SetResourceManagerPermissionGroup|SetResourceManagerPermissionGroup]] || const char* path, u32 id
+
| 0x2D || 0x2D || IOSError || [[#AssociateResourceManager|AssociateResourceManager]] || const char* path, u32 id
|-
|-
| 0x2E || 0x2E || IOSError || SetResourceManagerFlags || const char* path, u32 flags
| 0x2E || 0x2E || IOSError || SetResourceManagerFlags || const char* path, u32 flags
Line 451:
Line 451:
| 0x30 || 0x30 || IOSError || ClearClientCapabilities || IOSProcessId id
| 0x30 || 0x30 || IOSError || ClearClientCapabilities || IOSProcessId id
|-
|-
−
| 0x31 || 0x31 || IOSError || QueryClientCapabilities || IOSProcessId id, u32 feature_id, void *out_buffer
+
| 0x31 || 0x31 || IOSError || GetResourceClientCapabilityByFeatureId || IOSProcessId id, u32 feature_id, [[#IOSResourceClientCapability|IOSResourceClientCapability]] *out
|-
|-
−
| 0x32 || 0x32 || IOSError || QueryFeatureId || u32 feature_id, int out_count, void *out_buffer
+
| 0x32 || 0x32 || IOSError || GetResourceManagersByFeatureId || u32 feature_id, u32 max_count, [[#IOSResourceManager|IOSResourceManager]] *out
|-
|-
| 0x33 || 0x33 || [[#IOSFd|IOSFd]] || IOS_Open || const char* path, u32 flags
| 0x33 || 0x33 || [[#IOSFd|IOSFd]] || IOS_Open || const char* path, u32 flags
Line 575:
Line 575:
| 0x6E || 0x64 || IOSError || GetThreadProfile || IOSThreadId id, [[#IOSThreadProfile|IOSThreadProfile]] *out
| 0x6E || 0x64 || IOSError || GetThreadProfile || IOSThreadId id, [[#IOSThreadProfile|IOSThreadProfile]] *out
|-
|-
−
| 0x6F || 0x65 || IOSError || GetThreadProfiles || u32 max_profiles, [[#IOSThreadProfile|IOSThreadProfile]] *out
+
| 0x6F || 0x65 || IOSError || GetThreadProfiles || u32 max_count, [[#IOSThreadProfile|IOSThreadProfile]] *out
|-
|-
| 0x70 || || IOSError || GetIobContext || u32 id, IOSIobContext *out_buf
| 0x70 || || IOSError || GetIobContext || u32 id, IOSIobContext *out_buf
Line 587:
Line 587:
| 0x74 || 0x68 || IOSError || GetResourcePerProcessUtilization || [[#IOSResourcePerProcessUtilization|IOSResourcePerProcessUtilization]]* out, IOSProcessId id, bool clear
| 0x74 || 0x68 || IOSError || GetResourcePerProcessUtilization || [[#IOSResourcePerProcessUtilization|IOSResourcePerProcessUtilization]]* out, IOSProcessId id, bool clear
|-
|-
−
| 0x75 || 0x69 || IOSError || IOS_GetTimerUtilization ||
+
| 0x75 || 0x69 || IOSError || IOS_GetTimerUtilization || [[#IOSTimerUtilization|IOSTimerUtilization]] *out
|-
|-
−
| 0x76 || 0x6A || IOSError || IOS_GetSemaphoreUtilization ||
+
| 0x76 || 0x6A || IOSError || IOS_GetSemaphoreUtilization || [[#IOSSemaphoreUtilization|IOSSemaphoreUtilization]] *out
|-
|-
| 0x77 || 0x6B || IOSError || GetHeapProfile || IOSHeapId id, [[#IOSHeapProfile|IOSHeapProfile]] *profile
| 0x77 || 0x6B || IOSError || GetHeapProfile || IOSHeapId id, [[#IOSHeapProfile|IOSHeapProfile]] *profile
Line 623:
Line 623:
| 0x86 || 0x7A || IOSSecurityLevel || GetSecurityLevel ||
| 0x86 || 0x7A || IOSSecurityLevel || GetSecurityLevel ||
|-
|-
−
| 0x87 || 0x7B || IOSError || GetOpenResourceHandles || u32 out_count, [[#IOSOpenResourceHandle|IOSOpenResourceHandle]] *out, IOSProcessId id
+
| 0x87 || 0x7B || IOSError || GetResourceOpenHandles || u32 max_count, [[#IOSResourceOpenHandle|IOSResourceOpenHandle]] *out, IOSProcessId id
|-
|-
| 0x88 || 0x7C || IOSError || SetMainTitleSdkVersion || u32 version
| 0x88 || 0x7C || IOSError || SetMainTitleSdkVersion || u32 version
Line 629:
Line 629:
| 0x89 || 0x7D || u32 || GetMainTitleSdkVersion ||
| 0x89 || 0x7D || u32 || GetMainTitleSdkVersion ||
|-
|-
−
| 0x8A || 0x7E || IOSError || GetDynamicHeapAccess ||
+
| 0x8A || 0x7E || IOSError || IsCrossProcessHeap || void *ptr, u32 size
|-
|-
| 0x8B || 0x7F || IOSError || HandleDebugInterrupt || const char *dbg_sts, u32 dbg_sts_size, [[#IOSMessageQueueId|IOSMessageQueueId]] id, [[#IOSMessage|IOSMessage]] message
| 0x8B || 0x7F || IOSError || HandleDebugInterrupt || const char *dbg_sts, u32 dbg_sts_size, [[#IOSMessageQueueId|IOSMessageQueueId]] id, [[#IOSMessage|IOSMessage]] message
Line 637:
Line 637:
| 0x8D || 0x81 || IOSError || ||
| 0x8D || 0x81 || IOSError || ||
|-
|-
−
| 0x8E || 0x82 || IOSError || GetResourceViolations || u32 max_violations, [[#IOSResourceViolation|IOSResourceViolation]] *violations
+
| 0x8E || 0x82 || IOSError || GetViolatingResourceManagers || u32 max_count, [[#IOSResourceManager|IOSResourceManager]] *out
|-
|-
| 0x8F || 0x83 || u32 || GetClientHandles || char *dev_node
| 0x8F || 0x83 || u32 || GetClientHandles || char *dev_node
Line 643:
Line 643:
| 0x90 || 0x84 || IOSError || DisableDeviceRegistration || bool disable
| 0x90 || 0x84 || IOSError || DisableDeviceRegistration || bool disable
|-
|-
−
| 0x91 || 0x85 || IOSError || GetPendingResourceRequests || u32 max_requests, [[#IOSPendingResourceRequest|IOSPendingResourceRequest]] *requests, IOSProcessId id
+
| 0x91 || 0x85 || IOSError || GetPendingResourceRequests || u32 max_count, [[#IOSPendingResourceRequest|IOSPendingResourceRequest]] *requests, IOSProcessId id
|-
|-
| 0x92 || 0x86 || IOSError || [[#InitializeIOS|InitializeIOS]] ||
| 0x92 || 0x86 || IOSError || [[#InitializeIOS|InitializeIOS]] ||
Line 680:
Line 680:
Read data from the [[#Hardware/eFuse|eFuses]]. This can only be used from the IOS-CRYPTO process.
Read data from the [[#Hardware/eFuse|eFuses]]. This can only be used from the IOS-CRYPTO process.
−
=== SetResourceManagerPermissionGroup ===
+
=== AssociateResourceManager ===
Associates a resource manager to the specified group ID. This ID appears to correspond to the cos.xml permissions groupid? This syscall isn't used with devices that don't require any permissions(and are PowerPC-accessible) it seems. It appears when this ID isn't listed in the cos.xml groupids at all, the device is ARM-only.
Associates a resource manager to the specified group ID. This ID appears to correspond to the cos.xml permissions groupid? This syscall isn't used with devices that don't require any permissions(and are PowerPC-accessible) it seems. It appears when this ID isn't listed in the cos.xml groupids at all, the device is ARM-only.
Line 1,104:
Line 1,104:
| 0xC || 0x2 * 14 || PerPidUtilization
| 0xC || 0x2 * 14 || PerPidUtilization
|}
|}
+
== IOSEvent ==
== IOSEvent ==
Line 1,130:
Line 1,131:
! Offset || Size || Description
! Offset || Size || Description
|-
|-
−
| 0x0 || 0x4 ||
+
| 0x0 || 0x20 || Path
−
|-
−
| 0x4 || 0x4 ||
−
|-
−
| 0x8 || 0x4 ||
|-
|-
−
| 0xC || 0x4 || Owner
+
| 0x20 || 0x4 || Pid
|-
|-
−
| 0x10 || 0x4 || OpenHandles
+
| 0x24 || 0x4 || Owner
|-
|-
−
| 0x14 || 0x4 || OpenHandlesWaterline
+
| 0x28 || 0x4 || BusyCloseViolations
|-
|-
−
| 0x18 || 0x4 || MaxOpenHandles
+
| 0x2C || 0x4 || ActiveTxnCount
|-
|-
−
| 0x1C || 0x10 * 96 || [[#IOSResourceHandle|OpenHandles]]
+
| 0x30 || 0x4 || OpenHandles
−
|-
−
| 0x61C || 0x4 || ActiveTxns
−
|-
−
| 0x620 || 0x4 || ActiveTxnWaterline
−
|-
−
| 0x624 || 0x4 || TotalTxnAllocFailures
−
|-
−
| 0x628 || 0x4 || MaxActiveTxns
−
|-
−
| 0x62C || 0xC * 20 ||
−
|-
−
| 0x71C || 0x4 || RegisteredResources
−
|-
−
| 0x720 || 0x4 || MaxRegisteredResources
−
|-
−
| 0x724 || 0x4 || InvalidResourceReplies
|}
|}
Line 1,201:
Line 1,182:
|-
|-
| 0xC || 0xB4 * 256 || [[#IOSResourceTransaction|Txns]]
| 0xC || 0xB4 * 256 || [[#IOSResourceTransaction|Txns]]
+
|}
+
+
== IOSActiveResourceHandleManager ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 ||
+
|-
+
| 0x4 || 0x4 ||
+
|-
+
| 0x8 || 0x4 ||
+
|-
+
| 0xC || 0x4 || Owner
+
|-
+
| 0x10 || 0x4 || OpenHandles
+
|-
+
| 0x14 || 0x4 || OpenHandlesWaterline
+
|-
+
| 0x18 || 0x4 || MaxOpenHandles
+
|-
+
| 0x1C || 0x10 * 96 || [[#IOSResourceHandle|Handles]]
+
|-
+
| 0x61C || 0x4 || ActiveTxns
+
|-
+
| 0x620 || 0x4 || ActiveTxnWaterline
+
|-
+
| 0x624 || 0x4 || TotalTxnAllocFailures
+
|-
+
| 0x628 || 0x4 || MaxActiveTxns
+
|-
+
| 0x62C || 0xC * 20 ||
+
|-
+
| 0x71C || 0x4 || RegisteredResources
+
|-
+
| 0x720 || 0x4 || MaxRegisteredResources
+
|-
+
| 0x724 || 0x4 || InvalidResourceReplies
|}
|}
Line 1,323:
Line 1,342:
|}
|}
−
== IOSResourceViolation ==
+
== IOSResourceOpenHandle ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
! Offset || Size || Description
|-
|-
−
| 0x0 || 0x20 || Path
+
| 0x0 || 0x4 || Pid
|-
|-
−
| 0x20 || 0x4 || Owner
+
| 0x4 || 0x4 || ClientFd
|-
|-
−
| 0x24 || 0x4 || RmOwner
+
| 0x8 || 0x4 || ServerHandle
|-
|-
−
| 0x28 || 0x4 ||
+
| 0xC || 0x20 || State
−
|-
−
| 0x2C || 0x4 ||
−
|-
−
| 0x30 || 0x4 ||
|}
|}
−
== IOSOpenResourceHandle ==
+
== IOSResourceClientCapability ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Offset || Size || Description
! Offset || Size || Description
|-
|-
−
| 0x0 || 0x4 || Pid
+
| 0x0 || 0x4 ||
|-
|-
−
| 0x4 || 0x4 || ClientFd
+
| 0x4 || 0x4 ||
−
|-
−
| 0x8 || 0x4 || ServerHandle
−
|-
−
| 0xC || 0x20 || State
|}
|}
Line 1,554:
Line 1,565:
|-
|-
| 0x18 || 0x4 || Microsecond
| 0x18 || 0x4 || Microsecond
+
|}
+
+
== IOSTimerUtilization ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || MaxCount
+
|-
+
| 0x4 || 0x4 || AllocatedCount
+
|-
+
| 0x8 || 0x4 || MaxAllocatedCount
+
|-
+
| 0xC || 0x2 * 14 || PerPidUtilization
+
|}
+
+
== IOSSemaphoreUtilization ==
+
{| class="wikitable" border="1"
+
|-
+
! Offset || Size || Description
+
|-
+
| 0x0 || 0x4 || MaxCount
+
|-
+
| 0x4 || 0x4 || AllocatedCount
+
|-
+
| 0x8 || 0x4 || MaxAllocatedCount
+
|-
+
| 0xC || 0x2 * 14 || PerPidUtilization
|}
|}