Line 241: |
Line 241: |
| || W0=result | | || W0=result |
| |- | | |- |
− | | 0x65 || svcGetProcessList || X1=pids_out_ptr, W2=max_out || W0=result, W1=num_out | + | | 0x65 || [[#svcGetProcessList]] || X1=pids_out_ptr, W2=max_out || W0=result, W1=num_out |
| |- | | |- |
| | 0x66 || svcGetThreadList || X1=tids_out_ptr, W2=max_out, W3=debug_handle_or_zero || W0=result, X1=num_out | | | 0x66 || svcGetThreadList || X1=tids_out_ptr, W2=max_out, W3=debug_handle_or_zero || W0=result, X1=num_out |
Line 1,508: |
Line 1,508: |
| | | |
| '''0xf401:''' Process has debug events queued or is already running. | | '''0xf401:''' Process has debug events queued or is already running. |
| + | |
| + | == svcGetProcessList == |
| + | |
| + | <div style="display: inline-block;"> |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Argument64 || Argument32 || Type || Name |
| + | |- |
| + | | (In) X1 || R1 || u64* || PidBuffer |
| + | |- |
| + | | (In) X2 || R2 || size_t || PidBufferSize |
| + | |- |
| + | | (Out) X0 || R0 || [[#Result]] || Ret |
| + | |- |
| + | | (Out) X1 || R1 || size_t || NumProcesses |
| + | |} |
| + | </div> |
| + | |
| + | '''Description:''' Fills the provided array with the pids of currently living processes. A process "lives" so long as it is currently running or a handle to it still exists. |
| + | |
| + | It returns the total number of processes currently alive. If this number is bigger than the size of PidBuffer, the user won't have all the pids. |
| + | |
| + | === Result codes === |
| + | |
| + | '''0x0:''' Success. |
| + | |
| + | '''0xd401:''' The provided buffer is outside the process address space. |
| + | |
| + | '''0xe601:''' copyToUser failed. The provided buffer is not user-accessible. |
| + | |
| + | '''0xee01:''' The provided buffer size is too big. Max value is 0xFFFFFFF. |
| | | |
| == svcGetSystemInfo == | | == svcGetSystemInfo == |