Multi-threading: Difference between revisions

Lectem (talk | contribs)
No edit summary
Lectem (talk | contribs)
No edit summary
Line 17: Line 17:
== Usage ==
== Usage ==


=== CreateThread (svc 0x08) ===
=== CreateThread ===
'''svc''' : 0x08


'''Definition'''
'''Definition'''
Line 45: Line 46:
The input address used for Entrypoint_Param and StackTop are normally the same, however these can be arbitrary. For the main thread the Entrypoint_Param is value 0.
The input address used for Entrypoint_Param and StackTop are normally the same, however these can be arbitrary. For the main thread the Entrypoint_Param is value 0.


=== ExitThread (svc 0x09)===
=== ExitThread ===
'''svc''' : 0x09


'''Definition'''
'''Definition'''
  void ExitThread(void);
  void ExitThread(void);


=== SleepThread (svc 0x0A)===
=== SleepThread ===
'''svc''' : 0x0A


'''Definition'''
'''Definition'''
  void SleepThread(s64 nanoseconds);
  void SleepThread(s64 nanoseconds);


=== GetThreadPriority (svc 0x0B) ===
=== GetThreadPriority ===
'''svc''' : 0x0B


'''Definition'''
'''Definition'''
Line 70: Line 74:
  bx  lr
  bx  lr


=== SetThreadPriority (svc 0x0C) ===
=== SetThreadPriority ===
'''svc''' : 0x0C


'''Definition'''
'''Definition'''
  Result SetThreadPriority(Handle thread, s32 priority);
  Result SetThreadPriority(Handle thread, s32 priority);


=== OpenThread (svc 0x34) ===
=== OpenThread ===
'''svc''' : 0x34


'''Definition'''
'''Definition'''
  Result OpenThread(Handle* thread, Handle process, u32 threadId);
  Result OpenThread(Handle* thread, Handle process, u32 threadId);


=== GetProcessIdOfThread (svc 0x36) ===
=== GetProcessIdOfThread ===
'''svc''' : 0x36


'''Definition'''
'''Definition'''
  Result GetProcessIdOfThread(u32* processId, Handle thread);
  Result GetProcessIdOfThread(u32* processId, Handle thread);


=== GetThreadId (svc 0x37) ===
=== GetThreadId ===
'''svc''' : 0x37


'''Definition'''
'''Definition'''
  Result GetThreadId(u32* threadId, Handle thread);
  Result GetThreadId(u32* threadId, Handle thread);


=== GetThreadInfo (svc 0x2C) ===
=== GetThreadInfo ===
'''svc''' : 0x2C


'''Definition'''
'''Definition'''
Line 103: Line 112:
|}
|}


=== GetThreadContext (svc 0x3B) ===
=== GetThreadContext ===
'''svc''' : 0x3B


'''Definition'''
'''Definition'''
Line 113: Line 123:
== Core affinity ==  
== Core affinity ==  


=== GetThreadAffinityMask (svc 0x0D) ===
=== GetThreadAffinityMask ===
'''svc''' : 0x0D


'''Definition'''
'''Definition'''
  Result GetThreadAffinityMask(u8* affinitymask, Handle thread, s32 processorcount);
  Result GetThreadAffinityMask(u8* affinitymask, Handle thread, s32 processorcount);


=== SetThreadAffinityMask (svc 0x0E) ===
=== SetThreadAffinityMask ===
'''svc''' : 0x0E


'''Definition'''
'''Definition'''
  Result SetThreadAffinityMask(Handle thread, u8* affinitymask, s32 processorcount);
  Result SetThreadAffinityMask(Handle thread, u8* affinitymask, s32 processorcount);


=== GetThreadIdealProcessor (svc 0x0F) ===
=== GetThreadIdealProcessor ===
'''svc''' : 0x0F


'''Definition'''
'''Definition'''
  Result GetThreadIdealProcessor(s32* processorid, Handle thread);
  Result GetThreadIdealProcessor(s32* processorid, Handle thread);


=== SetThreadIdealProcessor (svc 0x10) ===
=== SetThreadIdealProcessor ===
'''svc''' : 0x10


== Debug ==  
== Debug ==