This group contains the implementation to support flexible per-CPU data.
More...
|
#define | PER_CPU_DATA_NEED_INITIALIZATION() RTEMS_LINKER_RWSET_DECLARE( _Per_CPU_Data, char ) |
| Translation units which define per-CPU items shall call this macro exactly once at file scope.
|
|
#define | PER_CPU_DATA_ITEM_DECLARE(type, item) RTEMS_LINKER_RWSET_ITEM_DECLARE( _Per_CPU_Data, type, item ) |
| Declares a per-CPU item of the specified type.
|
|
#define | PER_CPU_DATA_ITEM(type, item) RTEMS_LINKER_RWSET_ITEM( _Per_CPU_Data, type, item ) |
| Defines a per-CPU item of the specified type.
|
|
#define | PER_CPU_DATA_OFFSET(item) |
| Returns the offset of the per-CPU item to the begin of the per-CPU data area.
|
|
#define | PER_CPU_DATA_GET_BY_OFFSET(cpu, type, offset) |
| Returns a pointer of the specified type to the per-CPU item at the specified offset for the specified processor.
|
|
#define | PER_CPU_DATA_GET(cpu, type, item) &_Linker_set__Per_CPU_Data_##item, (void) cpu |
| Returns a pointer of the specified type to the specified per-CPU item for the specified processor.
|
|
|
| RTEMS_LINKER_RWSET_DECLARE (_Per_CPU_Data, char) |
|
This group contains the implementation to support flexible per-CPU data.
Macros to define custom per-CPU items are provided. The items are collected in a special linker set. During system initialization the content of the linker set is duplicated for all secondary processors using memory allocated from the workspace. The begin and end of the per-CPU data area is cache line aligned (CPU_CACHE_LINE_BYTES).
◆ PER_CPU_DATA_GET
#define PER_CPU_DATA_GET |
( |
|
cpu, |
|
|
|
type, |
|
|
|
item |
|
) |
| &_Linker_set__Per_CPU_Data_##item, (void) cpu |
Returns a pointer of the specified type to the specified per-CPU item for the specified processor.
- Parameters
-
cpu | The processor of the item. |
type | The type of the item. |
item | The designator of the item. |
◆ PER_CPU_DATA_GET_BY_OFFSET
#define PER_CPU_DATA_GET_BY_OFFSET |
( |
|
cpu, |
|
|
|
type, |
|
|
|
offset |
|
) |
| |
Value: (type *) ( (uintptr_t) RTEMS_LINKER_SET_BEGIN( _Per_CPU_Data ) + offset ), \
(void) cpu
Returns a pointer of the specified type to the per-CPU item at the specified offset for the specified processor.
- Parameters
-
cpu | The processor of the item. |
type | The type of the item. |
offset | The offset of the item. |
◆ PER_CPU_DATA_ITEM
#define PER_CPU_DATA_ITEM |
( |
|
type, |
|
|
|
item |
|
) |
| RTEMS_LINKER_RWSET_ITEM( _Per_CPU_Data, type, item ) |
Defines a per-CPU item of the specified type.
- Parameters
-
type | The type of the item. |
item | The designator of the item. |
◆ PER_CPU_DATA_ITEM_DECLARE
#define PER_CPU_DATA_ITEM_DECLARE |
( |
|
type, |
|
|
|
item |
|
) |
| RTEMS_LINKER_RWSET_ITEM_DECLARE( _Per_CPU_Data, type, item ) |
Declares a per-CPU item of the specified type.
Items declared with this macro have external linkage.
- Parameters
-
type | The type of the item. |
item | The designator of the item. |
◆ PER_CPU_DATA_OFFSET
#define PER_CPU_DATA_OFFSET |
( |
|
item | ) |
|
Value: ( (uintptr_t) &_Linker_set__Per_CPU_Data_##item \
- (uintptr_t) RTEMS_LINKER_SET_BEGIN( _Per_CPU_Data ) )
Returns the offset of the per-CPU item to the begin of the per-CPU data area.
- Parameters
-
item | The designator of the item. |