c436798477775dafb5574d6121ad07c98c2a1150
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / ldga.h
1 /**
2  * @file ldga.h
3  * @author Lunaixsky (lunaxisky@qq.com)
4  * @brief Linker generated array definition
5  * @version 0.1
6  * @date 2023-08-18
7  *
8  * @copyright Copyright (c) 2023
9  *
10  */
11 #ifndef __LUNAIX_LDGA_H
12 #define __LUNAIX_LDGA_H
13
14 #include <lunaix/types.h>
15
16 #define export_ldga_el(ga_name, el_name, type, val)                            \
17     type __attribute__((section(".lga." #ga_name)))                            \
18     __lga_##ga_name##_##el_name = (type)(val)
19
20 #define ldga_foreach(ga_name, el_type, index, el)                              \
21     extern el_type __lga_##ga_name##_start[], __lga_##ga_name##_end;           \
22     for (index = 0, el = __lga_##ga_name##_start[index];                       \
23          (ptr_t)&__lga_##ga_name##_start[index] <                              \
24          (ptr_t)&__lga_##ga_name##_end;                                        \
25          el = __lga_##ga_name##_start[++index])
26
27 #endif /* __LUNAIX_LDGA_H */