Function ctru_sys::threadCreate
source · pub unsafe extern "C" fn threadCreate(
entrypoint: ThreadFunc,
arg: *mut c_void,
stack_size: usize,
prio: c_int,
core_id: c_int,
detached: bool
) -> Thread
Expand description
Creates a new libctru thread.
§Arguments
entrypoint
- The function that will be called first upon thread creationarg
- The argument passed toentrypoint
stack_size
- The size of the stack that will be allocated for the thread (will be rounded to a multiple of 8 bytes)prio
- Low values gives the thread higher priority. For userland apps, this has to be within the range [0x18;0x3F]. The main thread usually has a priority of 0x30, but not always. Use svcGetThreadPriority() if you need to create a thread with a priority that is explicitly greater or smaller than that of the main thread.core_id
- The ID of the processor the thread should be ran on. Processor IDs are labeled starting from 0. On Old3DS it must be <2, and on New3DS it must be <4. Pass -1 to execute the thread on all CPUs and -2 to execute the thread on the default CPU (read from the Exheader).detached
- When set to true, the thread is automatically freed when it finishes.
§Returns
The libctru thread handle on success, NULL on failure.
- Processor #0 is the application core. It is always possible to create a thread on this core.
- Processor #1 is the system core. If APT_SetAppCpuTimeLimit is used, it is possible to create a single thread on this core.
- Processor #2 is New3DS exclusive. Normal applications can create threads on this core if the exheader kernel flags bitmask has 0x2000 set.
- Processor #3 is New3DS exclusive. Normal applications cannot create threads on this core.
- Processes in the BASE memory region can always create threads on processors #2 and #3.
Note: Default exit code of a thread is 0. svcExitThread should never be called from the thread, use threadExit instead.