C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
 
Loading...
Searching...
No Matches

ARM-specific architecture state of a thread. More...

Data Fields

int block_pipe [2]
 Pipe used to force thread to stop.
 
volatile atomic_int is_suspended
 State information on if thread is suspended or not (unused)
 
thrd_t sched_thread
 C11 thread identifier of the Linux thread that supports this CMRX thread.
 
pthread_t sched_thread_id
 POSIX thread identifier of the Linux thread that support this CMRX thread.
 
struct syscall_dispatch_t syscall
 Buffer for dispatching system calls to the kernel and return values back to the userspace.
 

Detailed Description

ARM-specific architecture state of a thread.

Architecture code-private part of thread record.

Linux port internal architecture state.

This structure holds additional state needed by the ARM Cortex M CPUs to properly store/restore thread state.

As of now the floating point usage information is stored here. This is provided only if FPU is available and activated.

This structure records thread state private to the Linux port. Here blocking primitives for synchronization of threads and system calls are recorded as well as block where information is passed down to the syscall and back from it.

This structure holds the CPU-specific part of thread state. It can be empty if architecture does not need any specific information saved in the CPU state.

Field Documentation

◆ block_pipe

int Arch_State_t::block_pipe[2]

Pipe used to force thread to stop.

Underlying mechanism is using POSIX threads to host CMRX threads. These can't be stopped from outside, so we use this mechanism to inject synchronization points into threads.

Use thread_suspend_execution() in whatever place you need to suspend thread execution for whatever reason other hardware would do so - e.g. switch into kernel context or interrupt.

@Note Offset [1] is the write (unblock) end, offset [0] is the read (block) end.

◆ is_suspended

volatile atomic_int Arch_State_t::is_suspended

State information on if thread is suspended or not (unused)

◆ sched_thread

thrd_t Arch_State_t::sched_thread

C11 thread identifier of the Linux thread that supports this CMRX thread.

◆ sched_thread_id

pthread_t Arch_State_t::sched_thread_id

POSIX thread identifier of the Linux thread that support this CMRX thread.

◆ syscall

struct syscall_dispatch_t Arch_State_t::syscall

Buffer for dispatching system calls to the kernel and return values back to the userspace.