RTEMS: RTEMS Per CPU Information

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Modules | Files | Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
RTEMS Per CPU Information
Internal » SuperCore

## Modules
| Flexible Per-CPU Data
| Flexible Per-CPU Data.

## Files
file | percpu.c
| Allocate and Initialize Per CPU Structures.

## Data Structures
struct | Per_CPU_Stats
| Per-CPU statistics. More...
struct | Per_CPU_Control
| Per CPU Core Structure. More...
struct | Per_CPU_Control_envelope

## Macros
#define | _Per_CPU_Acquire(cpu, lock_context) _ISR_lock_Acquire( &( cpu )->Lock, lock_context )
#define | _Per_CPU_Release(cpu, lock_context) _ISR_lock_Release( &( cpu )->Lock, lock_context )
#define | _Per_CPU_Get_snapshot() ( &_Per_CPU_Information[ _SMP_Get_current_processor() ].per_cpu )
#define | _Per_CPU_Get() _Per_CPU_Get_snapshot()
#define | _Thread_Dispatch_disable_level _Per_CPU_Get()->thread_dispatch_disable_level
#define | _Thread_Heir _Per_CPU_Get()->heir
#define | _Thread_Executing _Per_CPU_Get_executing( _Per_CPU_Get() )
#define | _ISR_Nest_level _Per_CPU_Get()->isr_nest_level
#define | _CPU_Interrupt_stack_low _Per_CPU_Get()->interrupt_stack_low
#define | _CPU_Interrupt_stack_high _Per_CPU_Get()->interrupt_stack_high
#define | _Thread_Dispatch_necessary _Per_CPU_Get()->dispatch_necessary

## Typedefs
typedef struct Per_CPU_Control | Per_CPU_Control
| Per CPU Core Structure.

## Enumerations
enum | Per_CPU_Watchdog_index { PER_CPU_WATCHDOG_TICKS , PER_CPU_WATCHDOG_REALTIME , PER_CPU_WATCHDOG_MONOTONIC , PER_CPU_WATCHDOG_COUNT }
| Per-CPU watchdog header index. More...

## Functions
RTEMS_INLINE_ROUTINE void | _Per_CPU_Acquire_all (ISR_lock_Context *lock_context)
RTEMS_INLINE_ROUTINE void | _Per_CPU_Release_all (ISR_lock_Context *lock_context)
RTEMS_INLINE_ROUTINE struct _Thread_Control * | _Thread_Get_executing (void)
| Returns the thread control block of the executing thread.

## Variables
Per_CPU_Control_envelope _Per_CPU_Information[] | CPU_STRUCTURE_ALIGNMENT
| Set of Per CPU Core Information.

## Detailed Description

This defines the per CPU state information required by RTEMS and the BSP. In an SMP configuration, there will be multiple instances of this data structure – one per CPU – and the current CPU number will be used as the index.

## Typedef Documentation

## ◆ Per_CPU_Control

typedef struct Per_CPU_Control Per_CPU_Control

Per CPU Core Structure.

This structure is used to hold per core state information.

## Enumeration Type Documentation

## ◆ Per_CPU_Watchdog_index

enum Per_CPU_Watchdog_index

Per-CPU watchdog header index.

Enumerator
PER_CPU_WATCHDOG_TICKS | Index for tick clock per-CPU watchdog header. The reference time point for the tick clock is the system start. The clock resolution is one system clock tick. It is used for the system clock tick based time services.
PER_CPU_WATCHDOG_REALTIME | Index for realtime clock per-CPU watchdog header. The reference time point for the realtime clock is the POSIX Epoch. The clock resolution is one nanosecond. It is used for the time of day services and the POSIX services using CLOCK_REALTIME.
PER_CPU_WATCHDOG_MONOTONIC | Index for monotonic clock per-CPU watchdog header. The reference time point for the monotonic clock is the system start. The clock resolution is one nanosecond. It is used for the POSIX services using CLOCK_MONOTONIC.
PER_CPU_WATCHDOG_COUNT | Count of per-CPU watchdog headers.

## Function Documentation

## ◆ _Thread_Get_executing()

RTEMS_INLINE_ROUTINE struct _Thread_Control * _Thread_Get_executing | ( | void |  | ) |

Returns the thread control block of the executing thread.

This function can be called in any thread context. On SMP configurations, interrupts are disabled to ensure that the processor index is used consistently if no CPU port specific method is available to get the executing thread.

Returns
  The thread control block of the executing thread.

## Variable Documentation

## ◆ CPU_STRUCTURE_ALIGNMENT

Per_CPU_Control_envelope _Per_CPU_Information [] CPU_STRUCTURE_ALIGNMENT
| extern

Set of Per CPU Core Information.

This is an array of per CPU core information.