xref: /nrf52832-nimble/rt-thread/include/rtm.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  */
6*10465441SEvalZero 
7*10465441SEvalZero #ifndef __RTM_H__
8*10465441SEvalZero #define __RTM_H__
9*10465441SEvalZero 
10*10465441SEvalZero #include <rtdef.h>
11*10465441SEvalZero #include <rtthread.h>
12*10465441SEvalZero 
13*10465441SEvalZero #ifdef RT_USING_MODULE
14*10465441SEvalZero struct rt_module_symtab
15*10465441SEvalZero {
16*10465441SEvalZero     void       *addr;
17*10465441SEvalZero     const char *name;
18*10465441SEvalZero };
19*10465441SEvalZero 
20*10465441SEvalZero #if defined(_MSC_VER)
21*10465441SEvalZero #pragma section("RTMSymTab$f",read)
22*10465441SEvalZero #define RTM_EXPORT(symbol)                                            \
23*10465441SEvalZero __declspec(allocate("RTMSymTab$f"))const char __rtmsym_##symbol##_name[] = "__vs_rtm_"#symbol;
24*10465441SEvalZero #pragma comment(linker, "/merge:RTMSymTab=mytext")
25*10465441SEvalZero 
26*10465441SEvalZero #elif defined(__MINGW32__)
27*10465441SEvalZero #define RTM_EXPORT(symbol)
28*10465441SEvalZero 
29*10465441SEvalZero #else
30*10465441SEvalZero #define RTM_EXPORT(symbol)                                            \
31*10465441SEvalZero const char __rtmsym_##symbol##_name[] SECTION(".rodata.name") = #symbol;     \
32*10465441SEvalZero const struct rt_module_symtab __rtmsym_##symbol SECTION("RTMSymTab")= \
33*10465441SEvalZero {                                                                     \
34*10465441SEvalZero     (void *)&symbol,                                                  \
35*10465441SEvalZero     __rtmsym_##symbol##_name                                          \
36*10465441SEvalZero };
37*10465441SEvalZero #endif
38*10465441SEvalZero 
39*10465441SEvalZero #else
40*10465441SEvalZero #define RTM_EXPORT(symbol)
41*10465441SEvalZero #endif
42*10465441SEvalZero 
43*10465441SEvalZero #endif
44