Kernel ABI: Difference between revisions
m [in] & [out] qualifiers on some pointers  | 
				 Add up to GetProcessorID, specify handle target types  | 
				||
| Line 41: | Line 41: | ||
|  | |  | ||
<code>r0</code>: <code>[out] u8* affinitymask</code><br>  | <code>r0</code>: <code>[out] u8* affinitymask</code><br>  | ||
<code>r1</code>: <code>Handle process</code><br>  | <code>r1</code>: <code>Handle<[[KProcess]]> process</code><br>  | ||
<code>r2</code>: <code>s32 processorcount</code>  | <code>r2</code>: <code>s32 processorcount</code>  | ||
|  | |  | ||
| Line 49: | Line 49: | ||
| SetProcessAffinityMask  | | SetProcessAffinityMask  | ||
|  | |  | ||
<code>r0</code>: <code>Handle process</code><br>  | <code>r0</code>: <code>Handle<[[KProcess]]> process</code><br>  | ||
<code>r1</code>: <code>[in] const u8* affinitymask</code><br>  | <code>r1</code>: <code>[in] const u8* affinitymask</code><br>  | ||
<code>r2</code>: <code>s32 processorcount</code>  | <code>r2</code>: <code>s32 processorcount</code>  | ||
| Line 58: | Line 58: | ||
| GetProcessIdealProcessor  | | GetProcessIdealProcessor  | ||
|  | |  | ||
<code>r1</code>?: <code>Handle process</code>  | <code>r1</code>?: <code>Handle<[[KProcess]]> process</code>  | ||
|  | |  | ||
<code>r0</code>: <code>Result</code><br>  | <code>r0</code>: <code>Result</code><br>  | ||
| Line 67: | Line 67: | ||
| SetProcessIdealProcessor  | | SetProcessIdealProcessor  | ||
|  | |  | ||
<code>r0</code>: <code>Handle process</code><br>  | <code>r0</code>: <code>Handle<[[KProcess]]> process</code><br>  | ||
<code>r1</code>: <code>s32 processorid</code>  | <code>r1</code>: <code>s32 processorid</code>  | ||
|  | |  | ||
| Line 82: | Line 82: | ||
|  | |  | ||
<code>r0</code>: <code>Result</code><br>  | <code>r0</code>: <code>Result</code><br>  | ||
<code>r1</code>: <code>Handle thread_handle</code>  | <code>r1</code>: <code>Handle<[[KThread]]> thread_handle</code>  | ||
|-  | |-  | ||
| 0x09  | | 0x09  | ||
| Line 108: | Line 108: | ||
| SetThreadPriority  | | SetThreadPriority  | ||
|  | |  | ||
<code>r0</code>: <code>Handle thread_handle</code><br>  | <code>r0</code>: <code>Handle<[[KThread]]> thread_handle</code><br>  | ||
<code>r1</code>: <code>s32 thread_priority</code>  | <code>r1</code>: <code>s32 thread_priority</code>  | ||
|  | |  | ||
| Line 117: | Line 117: | ||
|  | |  | ||
<code>r0</code>: <code>[out] u8* affinitymask</code><br>  | <code>r0</code>: <code>[out] u8* affinitymask</code><br>  | ||
<code>r1</code>: <code>Handle thread_handle</code><br>  | <code>r1</code>: <code>Handle<[[KThread]]> thread_handle</code><br>  | ||
<code>r2</code>: <code>s32 processorcount</code>  | <code>r2</code>: <code>s32 processorcount</code>  | ||
|  | |  | ||
| Line 125: | Line 125: | ||
| SetThreadAffinityMask  | | SetThreadAffinityMask  | ||
|  | |  | ||
<code>r0</code>: <code>Handle thread_handle</code><br>  | <code>r0</code>: <code>Handle<[[KThread]]> thread_handle</code><br>  | ||
<code>r1</code>: <code>[in] const u8* affinitymask</code><br>  | <code>r1</code>: <code>[in] const u8* affinitymask</code><br>  | ||
<code>r2</code>: <code>s32 processorcount</code>  | <code>r2</code>: <code>s32 processorcount</code>  | ||
|  | |  | ||
<code>r0</code>: <code>Result</code>  | <code>r0</code>: <code>Result</code>  | ||
|-  | |||
| 0x0F  | |||
| GetThreadIdealProcessor  | |||
|  | |||
<code>r0</code>: Ignored?<br>  | |||
<code>r1</code>: <code>Handle<[[KThread]]> thread_handle</code>  | |||
|  | |||
<code>r0</code>: <code>Result</code><br>  | |||
<code>r1</code>: <code>s32 processorid</code>  | |||
|-  | |||
| 0x10  | |||
| SetThreadIdealProcessor  | |||
|  | |||
<code>r0</code>: <code>Handle<[[KThread]]> thread_handle</code><br>  | |||
<code>r1</code>: <code>s32 processorid</code>  | |||
|  | |||
<code>r0</code>: <code>Result</code>  | |||
|-  | |||
| 0x11  | |||
| GetProcessorID  | |||
|  | |||
None  | |||
|  | |||
<code>r0</code>: <code>s32 processorid</code>  | |||
|-  | |-  | ||
| 0x24  | | 0x24  | ||
| WaitSynchronization1  | | WaitSynchronization1  | ||
|  | |  | ||
<code>r0</code>: <code>Handle handle</code><br>  | <code>r0</code>: <code>Handle<[[KSynchronizationObject]]> handle</code><br>  | ||
<code>r2-r3</code>: <code>s64 timeout</code>  | <code>r2-r3</code>: <code>s64 timeout</code>  | ||
|  | |  | ||
Revision as of 14:36, 7 October 2018
Inputs are read from registers starting from r0 and outputs are written back to the same registers (also starting with r0).
| ID | Name | Inputs | Outputs | 
|---|---|---|---|
| 0x01 | ControlMemory | 
 
  | 
 
  | 
| 0x02 | QueryMemory | 
 
  | 
 
  | 
| 0x03 | ExitProcess | None | None, doesn't return | 
| 0x04 | GetProcessAffinityMask | 
 
  | 
 
  | 
| 0x05 | SetProcessAffinityMask | 
 
  | 
 
  | 
| 0x06 | GetProcessIdealProcessor | 
 
  | 
 
  | 
| 0x07 | SetProcessIdealProcessor | 
 
  | 
 
  | 
| 0x08 | CreateThread | 
 
  | 
 
  | 
| 0x09 | ExitThread | None | None, doesn't return | 
| 0x0A | SleepThread | 
 
  | 
None | 
| 0x0B | GetThreadPriority | 
 
  | 
 
  | 
| 0x0C | SetThreadPriority | 
 
  | 
 
  | 
| 0x0D | GetThreadAffinityMask | 
 
  | 
 
  | 
| 0x0E | SetThreadAffinityMask | 
 
  | 
 
  | 
| 0x0F | GetThreadIdealProcessor | 
 
  | 
 
  | 
| 0x10 | SetThreadIdealProcessor | 
 
  | 
 
  | 
| 0x11 | GetProcessorID | 
 None  | 
 
  | 
| 0x24 | WaitSynchronization1 | 
 
  | 
 
  | 
| 0x1B | SetTimer | Timer handle, initial_low, interval_low, initial_high, interval_high | Result | 
| 0x2D | ConnectToPort | ??, pointer to port name | Result, handle to KClientSession | 
| 0x32 | SendSyncRequest | handle to KClientSession | Result |