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