In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Coreinit.rpl"

From WiiUBrew
Jump to navigation Jump to search
(→‎Internal: Link to snprintf() docs)
(→‎Functions: Added main thread functions)
Line 19: Line 19:
 
|<code>void ICInvalidateRange(void *addr, size_t length);</code>  
 
|<code>void ICInvalidateRange(void *addr, size_t length);</code>  
 
|Invalidate the specified instruction cache blocks
 
|Invalidate the specified instruction cache blocks
 +
|}
 +
 +
===Dynamic Linking===
 +
{| class="wikitable"
 +
!Name
 +
!Prototype
 +
!Description
 +
|-
 +
|OSDynLoad_Acquire
 +
|<code>void OSDynLoad_Acquire(const char *rplname, uint32_t *handle);</code>
 +
|Acquire a handle to an RPL by name
 +
|-
 +
|OSDynLoad_FindExport
 +
|<code>void OSDynLoad_FindExport(uint32_t handle, bool isdata, const char *symname, void **address);</code>
 +
|Get a symbol address from a loaded RPL
 
|}
 
|}
  
Line 39: Line 54:
 
|-
 
|-
 
|__os_snprintf
 
|__os_snprintf
|<code>int __os_snprintf(char *buf, size_t n, const char *format, ... )</code>  
+
|<code>int __os_snprintf(char *buf, size_t n, const char *format, ... );</code>  
 
|Format a string and place it in a buffer (just like [http://www.cplusplus.com/reference/cstdio/snprintf/ snprintf()])
 
|Format a string and place it in a buffer (just like [http://www.cplusplus.com/reference/cstdio/snprintf/ snprintf()])
 
|}
 
|}
  
===Dynamic Linking===
+
===Threads===
 
{| class="wikitable"
 
{| class="wikitable"
 
!Name
 
!Name
Line 49: Line 64:
 
!Description
 
!Description
 
|-
 
|-
|OSDynLoad_Acquire
+
|OSCreateThread
|<code>void OSDynLoad_Acquire(const char *rplname, uint32_t *handle);</code>  
+
|<code>bool OSCreateThread(OSThread *thread, void (*entry)(int,void*), int argc, void *args, void *stack, size_t stack_size, int32_t priority, int16_t affinity);</code>  
|Acquire a handle to an RPL by name
+
|Create a (initially-paused) thread that starts at the specified entry point
 +
|-
 +
|OSResumeThread
 +
|<code>void OSResumeThread(OSThread *thread);</code>
 +
|Resume a paused thread, causing it to be scheduled
 
|-
 
|-
|OSDynLoad_FindExport
+
|OSYieldThread
|<code>void OSDynLoad_FindExport(uint32_t handle, bool isdata, const char *symname, void **address);</code>  
+
|<code>void OSYieldThread();</code>
|Get a symbol address from a loaded RPL
+
|Yield control of the CPU, allowing another thread to run
 
|}
 
|}

Revision as of 02:08, 1 April 2015

coreinit.rpl is the the system library that provides direct access to Cafe OS services. It provides kernel calls, thread scheduling, memory management, and filesystem services. coreinit is the first RPL loaded by the loader, even before the main executable itself.

Functions

Cache

Name Prototype Description
DCFlushRange void DCFlushRange(void *addr, size_t length); Flush the specified data cache blocks to memory
DCInvalidateRange void DCInvalidateRange(void *addr, size_t length); Invalidate the specified data cache blocks
ICInvalidateRange void ICInvalidateRange(void *addr, size_t length); Invalidate the specified instruction cache blocks

Dynamic Linking

Name Prototype Description
OSDynLoad_Acquire void OSDynLoad_Acquire(const char *rplname, uint32_t *handle); Acquire a handle to an RPL by name
OSDynLoad_FindExport void OSDynLoad_FindExport(uint32_t handle, bool isdata, const char *symname, void **address); Get a symbol address from a loaded RPL

Error

Name Prototype Description
OSFatal void OSFatal(const char *msg); Print a message to the screen and halt the system

Internal

Name Prototype Description
__os_snprintf int __os_snprintf(char *buf, size_t n, const char *format, ... ); Format a string and place it in a buffer (just like snprintf())

Threads

Name Prototype Description
OSCreateThread bool OSCreateThread(OSThread *thread, void (*entry)(int,void*), int argc, void *args, void *stack, size_t stack_size, int32_t priority, int16_t affinity); Create a (initially-paused) thread that starts at the specified entry point
OSResumeThread void OSResumeThread(OSThread *thread); Resume a paused thread, causing it to be scheduled
OSYieldThread void OSYieldThread(); Yield control of the CPU, allowing another thread to run