RTEMS: _Thread_Control Struct Reference

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Data Fields
_Thread_Control Struct Reference
Internal » SuperCore » Thread Handler

`#include <thread.h>`

## Data Fields
Objects_Control | Object
Thread_queue_Control | Join_queue
| Thread queue for thread join operations and multi-purpose lock.
States_Control | current_state
Priority_Node | Real_priority
| The base priority of this thread in its home scheduler instance.
Thread_Scheduler_control | Scheduler
| Scheduler related control.
Thread_Wait_information | Wait
Thread_Timer_information | Timer
bool | is_idle
bool | is_preemptible
bool | is_fp
bool | was_created_with_inherited_scheduler
| True, if the thread was created with an inherited scheduler (PTHREAD_INHERIT_SCHED), and false otherwise.
uint32_t | cpu_time_budget
Thread_CPU_budget_algorithms | budget_algorithm
Thread_CPU_budget_algorithm_callout | budget_callout
Timestamp_Control | cpu_time_used
Thread_Start_information | Start
Thread_Action_control | Post_switch_actions
Context_Control | Registers
Context_Control_fp * | fp_context
struct _reent * | libc_reent
void * | API_Extensions [THREAD_API_LAST+1]
Thread_Keys_information | Keys
| The POSIX Keys information.
Thread_Life_control | Life
| Thread life-cycle control.
Thread_Capture_control | Capture
struct rtems_user_env_t * | user_environment
| Pointer to an optional thread-specific POSIX user environment.
struct _pthread_cleanup_context * | last_cleanup_context
| LIFO list of POSIX cleanup contexts.
struct User_extensions_Iterator * | last_user_extensions_iterator
| LIFO list of user extensions iterators.
void * | extensions [RTEMS_ZERO_LENGTH_ARRAY]
| Variable length array of user extension pointers.

## Detailed Description

This structure defines the Thread Control Block (TCB).

Uses a leading underscore in the structure name to allow forward declarations in standard header files provided by Newlib and GCC.

In case the second member changes (currently Join_queue), then the memset() in _Thread_Initialize() must be adjusted.

## Field Documentation

## ◆ API_Extensions

void* _Thread_Control::API_Extensions[THREAD_API_LAST+1]

This array contains the API extension area pointers.

## ◆ budget_algorithm

Thread_CPU_budget_algorithms _Thread_Control::budget_algorithm

This field is the algorithm used to manage this thread's time quantum. The algorithm may be specified as none which case, no limit is in place.

## ◆ budget_callout

Thread_CPU_budget_algorithm_callout _Thread_Control::budget_callout

This field is the method invoked with the budgeted time is consumed.

## ◆ cpu_time_budget

uint32_t _Thread_Control::cpu_time_budget

This field is the length of the time quantum that this thread is allowed to consume. The algorithm used to manage limits on CPU usage is specified by budget_algorithm.

## ◆ cpu_time_used

Timestamp_Control _Thread_Control::cpu_time_used

This field is the amount of CPU time consumed by this thread since it was created.

## ◆ current_state

States_Control _Thread_Control::current_state

This field is the current execution state of this thread.

## ◆ extensions

void* _Thread_Control::extensions[RTEMS_ZERO_LENGTH_ARRAY]

Variable length array of user extension pointers.

The length is defined by the application via <rtems/confdefs.h>.

## ◆ fp_context

Context_Control_fp* _Thread_Control::fp_context

This field points to the floating point context for this thread. If NULL, the thread is integer only.

## ◆ is_fp

bool _Thread_Control::is_fp

This field is true if the thread uses the floating point unit.

## ◆ is_idle

bool _Thread_Control::is_idle

This field is true if the thread is an idle thread.

## ◆ is_preemptible

bool _Thread_Control::is_preemptible

This field is true if the thread is preemptible.

## ◆ Join_queue

Thread_queue_Control _Thread_Control::Join_queue

Thread queue for thread join operations and multi-purpose lock.

The lock of this thread queue is used for various purposes. It protects the following fields

- RTEMS_API_Control::Signal,
- Thread_Control::budget_algorithm,
- Thread_Control::budget_callout,
- Thread_Control::cpu_time_budget,
- Thread_Control::current_state,
- Thread_Control::Post_switch_actions,
- Thread_Control::Scheduler::control, and
- Thread_Control::Scheduler::own_control.

See also
  _Thread_State_acquire().

## ◆ libc_reent

struct _reent* _Thread_Control::libc_reent

This field points to the newlib reentrancy structure for this thread.

## ◆ Life

Thread_Life_control _Thread_Control::Life

Thread life-cycle control.

Control state changes triggered by thread restart and delete requests.

## ◆ Object

Objects_Control _Thread_Control::Object

This field is the object management structure for each thread.

## ◆ Registers

Context_Control _Thread_Control::Registers

This field contains the context of this thread.

## ◆ Start

Thread_Start_information _Thread_Control::Start

This field contains information about the starting state of this thread.

## ◆ Timer

Thread_Timer_information _Thread_Control::Timer

This field is the Watchdog used to manage thread delays and timeouts.

## ◆ Wait

Thread_Wait_information _Thread_Control::Wait

This field is the blocking information for this thread.

The documentation for this struct was generated from the following file:

- cpukit/include/rtems/score/thread.h