Zephyr Project API
4.1.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
/* clang-format off */
16
#define Z_LINK_ITERABLE(struct_type) \
17
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_start)); \
18
KEEP(*(SORT_BY_NAME(._##struct_type.static.*))); \
19
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_end));
20
21
22
#define Z_LINK_ITERABLE_NUMERIC(struct_type) \
23
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_start)); \
24
KEEP(*(SORT(._##struct_type.static.*_?_*))); \
25
KEEP(*(SORT(._##struct_type.static.*_??_*))); \
26
KEEP(*(SORT(._##struct_type.static.*_???_*))); \
27
KEEP(*(SORT(._##struct_type.static.*_????_*))); \
28
KEEP(*(SORT(._##struct_type.static.*_?????_*))); \
29
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_end));
30
31
#define Z_LINK_ITERABLE_ALIGNED(struct_type, align) \
32
. = ALIGN(align); \
33
Z_LINK_ITERABLE(struct_type);
34
35
#define Z_LINK_ITERABLE_GC_ALLOWED(struct_type) \
36
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_start)); \
37
*(SORT_BY_NAME(._##struct_type.static.*)); \
38
PLACE_SYMBOL_HERE(_CONCAT(_##struct_type, _list_end));
39
/* clang-format on */
40
41
#define Z_LINK_ITERABLE_SUBALIGN CONFIG_LINKER_ITERABLE_SUBALIGN
42
57
#define ITERABLE_SECTION_ROM(struct_type, subalign) \
58
SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
59
{ \
60
Z_LINK_ITERABLE(struct_type); \
61
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
62
72
#define ITERABLE_SECTION_ROM_NUMERIC(struct_type, subalign) \
73
SECTION_PROLOGUE(struct_type##_area, EMPTY, SUBALIGN(subalign)) \
74
{ \
75
Z_LINK_ITERABLE_NUMERIC(struct_type); \
76
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
77
90
#define ITERABLE_SECTION_ROM_GC_ALLOWED(struct_type, subalign) \
91
SECTION_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
92
{ \
93
Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \
94
} GROUP_LINK_IN(ROMABLE_REGION)
95
110
#define ITERABLE_SECTION_RAM(struct_type, subalign) \
111
SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
112
{ \
113
Z_LINK_ITERABLE(struct_type); \
114
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
115
125
#define ITERABLE_SECTION_RAM_NUMERIC(struct_type, subalign) \
126
SECTION_PROLOGUE(struct_type##_area, EMPTY, SUBALIGN(subalign)) \
127
{ \
128
Z_LINK_ITERABLE_NUMERIC(struct_type); \
129
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
130
143
#define ITERABLE_SECTION_RAM_GC_ALLOWED(struct_type, subalign) \
144
SECTION_DATA_PROLOGUE(struct_type##_area,,SUBALIGN(subalign)) \
145
{ \
146
Z_LINK_ITERABLE_GC_ALLOWED(struct_type); \
147
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
148
/* end of struct_section_apis */
152
153
#endif
/* INCLUDE_ZEPHYR_LINKER_ITERABLE_SECTIONS_H_ */
include
zephyr
linker
iterable_sections.h
Generated on Sun May 4 2025 13:59:47 for Zephyr Project API by
1.9.8