Zephyr Project API
4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
iterable_sections.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2020, Intel Corporation
3
* Copyright (C) 2023, Nordic Semiconductor ASA
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef INCLUDE_ZEPHYR_LINKER_ITERABLE_SECTIONS_H_
8
#define INCLUDE_ZEPHYR_LINKER_ITERABLE_SECTIONS_H_
9
15
#define Z_LINK_ITERABLE(struct_type) \
16
_CONCAT(_##struct_type, _list_start) = .; \
17
KEEP(*(SORT_BY_NAME(._##struct_type.static.*))); \
18
_CONCAT(_##struct_type, _list_end) = .
19
20
#define Z_LINK_ITERABLE_NUMERIC(struct_type) \
21
_CONCAT(_##struct_type, _list_start) = .; \
22
KEEP(*(SORT(._##struct_type.static.*_?_*))); \
23
KEEP(*(SORT(._##struct_type.static.*_??_*))); \
24
KEEP(*(SORT(._##struct_type.static.*_???_*))); \
25
KEEP(*(SORT(._##struct_type.static.*_????_*))); \
26
KEEP(*(SORT(._##struct_type.static.*_?????_*))); \
27
_CONCAT(_##struct_type, _list_end) = .
28
29
#define Z_LINK_ITERABLE_ALIGNED(struct_type, align) \
30
. = ALIGN(align); \
31
Z_LINK_ITERABLE(struct_type);
32
33
#define Z_LINK_ITERABLE_GC_ALLOWED(struct_type) \
34
_CONCAT(_##struct_type, _list_start) = .; \
35
*(SORT_BY_NAME(._##struct_type.static.*)); \
36
_CONCAT(_##struct_type, _list_end) = .
37
38
#define Z_LINK_ITERABLE_SUBALIGN CONFIG_LINKER_ITERABLE_SUBALIGN
39
54
#define ITERABLE_SECTION_ROM(struct_type, subalign) \
55
SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
56
{ \
57
Z_LINK_ITERABLE(struct_type); \
58
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
59
69
#define ITERABLE_SECTION_ROM_NUMERIC(struct_type, subalign) \
70
SECTION_PROLOGUE(struct_type##_area, EMPTY, SUBALIGN(subalign)) \
71
{ \
72
Z_LINK_ITERABLE_NUMERIC(struct_type); \
73
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
74
87
#define ITERABLE_SECTION_ROM_GC_ALLOWED(struct_type, subalign) \
88
SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
89
{ \
90
Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \
91
} GROUP_LINK_IN(ROMABLE_REGION)
92
107
#define ITERABLE_SECTION_RAM(struct_type, subalign) \
108
SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
109
{ \
110
Z_LINK_ITERABLE(struct_type); \
111
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
112
122
#define ITERABLE_SECTION_RAM_NUMERIC(struct_type, subalign) \
123
SECTION_PROLOGUE(struct_type##_area, EMPTY, SUBALIGN(subalign)) \
124
{ \
125
Z_LINK_ITERABLE_NUMERIC(struct_type); \
126
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
127
140
#define ITERABLE_SECTION_RAM_GC_ALLOWED(struct_type, subalign) \
141
SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
142
{ \
143
Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \
144
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
145
/* end of struct_section_apis */
149
150
#endif
/* INCLUDE_ZEPHYR_LINKER_ITERABLE_SECTIONS_H_ */
include
zephyr
linker
iterable_sections.h
Generated on Tue Feb 11 2025 02:55:26 for Zephyr Project API by
1.9.8