Difference between revisions of "SVC"
Jump to navigation
Jump to search
Line 5: | Line 5: | ||
|- | |- | ||
| 0x1 | | 0x1 | ||
− | | ControlMemory(Handle*, | + | | ControlMemory(Handle*, unsigned int Addr, unsigned int Unk, unsigned int Size, unsigned int Unk, unsigned int Permissions) |
|- | |- | ||
| 0x2 | | 0x2 | ||
Line 95: | Line 95: | ||
|- | |- | ||
| 0x1F | | 0x1F | ||
− | | MapMemoryBlock(Handle, | + | | MapMemoryBlock(Handle, unsigned int Addr, unsigned int Permissions, unsigned int Unk) |
|- | |- | ||
| 0x20 | | 0x20 | ||
Line 131: | Line 131: | ||
|- | |- | ||
| 0x2B | | 0x2B | ||
− | | GetProcessInfo(unsigned long long * | + | | GetProcessInfo(unsigned long long *Output, Handle Process, unsigned int Type) |
|- | |- | ||
| 0x2C | | 0x2C | ||
Line 137: | Line 137: | ||
|- | |- | ||
| 0x2D | | 0x2D | ||
− | | ConnectToPort(Handle * | + | | ConnectToPort(Handle*, char *PortName) |
|- | |- | ||
| 0x2E | | 0x2E | ||
Line 161: | Line 161: | ||
|- | |- | ||
| 0x35 | | 0x35 | ||
− | | GetProcessId(unsigned int *ProcessId, Handle) | + | | GetProcessId(unsigned int *ProcessId, Handle Process) |
|- | |- | ||
| 0x36 | | 0x36 | ||
Line 170: | Line 170: | ||
|- | |- | ||
| 0x38 | | 0x38 | ||
− | | GetResourceLimit(Handle*, Handle | + | | GetResourceLimit(Handle*, Handle Process) |
|- | |- | ||
| 0x39 | | 0x39 | ||
Line 245: | Line 245: | ||
|- | |- | ||
| 0x60 | | 0x60 | ||
− | | DebugActiveProcess(Handle*, unsigned int) | + | | DebugActiveProcess(Handle*, unsigned int ProcessID) |
|- | |- | ||
| 0x61 | | 0x61 | ||
Line 317: | Line 317: | ||
|- | |- | ||
| 0x7a | | 0x7a | ||
− | | DisableExecuteNever( | + | | DisableExecuteNever(unsigned int Addr, unsigned int size) (Stubbed for regular kernel) |
|- | |- | ||
| 0x7c | | 0x7c |
Revision as of 03:09, 29 October 2012
Id | Description |
---|---|
0x1 | ControlMemory(Handle*, unsigned int Addr, unsigned int Unk, unsigned int Size, unsigned int Unk, unsigned int Permissions) |
0x2 | QueryMemory |
0x3 | ExitProcess() |
0x4 | GetProcessAffinityMask |
0x5 | SetProcessAffinityMask |
0x6 | GetProcessIdealProcessor |
0x7 | SetProcessIdealProcessor |
0x8 | CreateThread |
0x9 | ExitThread() |
0xA | SleepThread |
0xB | GetThreadPriority |
0xC | SetThreadPriority |
0xD | GetThreadAffinityMask |
0xE | SetThreadAffinityMask |
0xF | GetThreadIdealProcessor |
0x10 | SetThreadIdealProcessor |
0x11 | GetCurrentProcessorNumber |
0x12 | Run |
0x13 | CreateMutex |
0x14 | ReleaseMutex |
0x15 | CreateSemaphore |
0x16 | ReleaseSemaphore |
0x17 | CreateEvent |
0x18 | SignalEvent |
0x19 | ClearEvent |
0x1A | CreateTimer |
0x1B | SetTimer |
0x1C | CancelTimer |
0x1D | ClearTimer |
0x1E | CreateMemoryBlock |
0x1F | MapMemoryBlock(Handle, unsigned int Addr, unsigned int Permissions, unsigned int Unk) |
0x20 | UnmapMemoryBlock |
0x21 | CreateAddressArbiter |
0x22 | ArbitrateAddress |
0x23 | CloseHandle(Handle) |
0x24 | WaitSynchronization1 |
0x25 | WaitSynchronization2 |
0x26 | SignalAndWait |
0x27 | DuplicateHandle |
0x28 | GetSystemTick |
0x29 | GetHandleInfo |
0x2A | GetSystemInfo |
0x2B | GetProcessInfo(unsigned long long *Output, Handle Process, unsigned int Type) |
0x2C | GetThreadInfo |
0x2D | ConnectToPort(Handle*, char *PortName) |
0x2E | SendSyncRequest1 |
0x2F | SendSyncRequest2 |
0x30 | SendSyncRequest3 |
0x31 | SendSyncRequest4 |
0x32 | SendSyncRequest |
0x33 | OpenProcess(Handle*, unsigned int ProcessId) |
0x34 | OpenThread |
0x35 | GetProcessId(unsigned int *ProcessId, Handle Process) |
0x36 | GetProcessIdOfThread |
0x37 | GetThreadId |
0x38 | GetResourceLimit(Handle*, Handle Process) |
0x39 | GetResourceLimitLimitValues |
0x3A | GetResourceLimitCurrentValues |
0x3B | GetThreadContext |
0x3C | Break(BreakReason) |
0x3D | OutputDebugString(void const, int) (Does nothing on non-debug units) |
0x3E | ControlPerformanceCounter(unsigned long long, int, unsigned int, unsigned long long) |
0x47 | CreatePort |
0x48 | CreateSessionToPort |
0x49 | CreateSession |
0x4A | AcceptSession |
0x4B | ReplyAndReceive1 |
0x4C | ReplyAndReceive2 |
0x4D | ReplyAndReceive3 |
0x4E | ReplyAndReceive4 |
0x4F | ReplyAndReceive |
0x50 | BindInterrupt(Interrupt, Handle, int, bool) |
0x51 | UnbindInterrupt(Interrupt, Handle) |
0x52 | InvalidateProcessDataCache(Handle, void*, unsigned int) |
0x53 | StoreProcessDataCache(Handle process, void const* addr, unsigned int size) |
0x54 | FlushProcessDataCache(Handle, void const*, unsigned int) |
0x55 | StartInterProcessDma(Handle* out, Handle dstProcess, void* dst, Handle srcProcess, const void* src, size_t size, const DmaConfig& config ) |
0x56 | StopDma(Handle) |
0x57 | GetDmaState(DmaState*, Handle) |
0x58 | RestartDma(nn::Handle, void *, void const*, unsigned int, signed char) |
0x60 | DebugActiveProcess(Handle*, unsigned int ProcessID) |
0x61 | BreakDebugProcess(Handle) |
0x62 | TerminateDebugProcess(Handle) |
0x63 | GetProcessDebugEvent(DebugEventInfo*, Handle) |
0x64 | ContinueDebugEvent(Handle, unsigned int) |
0x65 | GetProcessList(int*, unsigned int*, int) |
0x66 | GetThreadList(int*, unsigned int*, int, Handle) |
0x67 | GetDebugThreadContext(ThreadContext*, Handle, unsigned int, unsigned int) |
0x68 | SetDebugThreadContext(Handle, unsigned int, ThreadContext const&, unsigned int) |
0x69 | QueryDebugProcessMemory(MemoryInfo*, PageInfo*, Handle, unsigned int) |
0x6a | ReadProcessMemory(void*, Handle, unsigned int, unsigned int) |
0x6b | WriteProcessMemory(Handle, void const*, unsigned int, unsigned int) |
0x6c | SetHardwareBreakPoint(int, unsigned int, unsigned int) |
0x6d | GetDebugThreadParam(long long *, int *, nn::Handle, unsigned int, nn::dmnt::DebugThreadParam) (Disabled on regular kernel) |
0x70 | ? |
0x71 | ? |
0x72 | ? |
0x73 | ? |
0x74 | Stubbed on regular kernel |
0x75 | ? |
0x76 | TerminateProcess(Handle) |
0x77 | ? |
0x78 | ? |
0x79 | ? |
0x7a | DisableExecuteNever(unsigned int Addr, unsigned int size) (Stubbed for regular kernel) |
0x7c | ? |
0x7d | ? |
Calling svcBreak on retail will only terminate the process which called this SVC. Only ControlMemory and MapMemoryBlock can be used to map memory pages, these SVCs only support mapping execute-never R/W pages.