C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
 
Loading...
Searching...
No Matches
application.h
1#pragma once
2
3/* ARM Cortex-M specific way to define something a vtable */
4#define CMRX_VTABLE_SPECIFIER __attribute__((section(".vtable."))) const
5
6/* File intentionally left blank */
7#define CMRX_APPLICATION_INSTANCE_ATTRIBUTES __attribute__((used, section(".applications") ))
8#define CMRX_THREAD_AUTOCREATE_ATTRIBUTES __attribute__((used, section(".thread_create") ))
9
10#define CMRX_APPLICATION_INSTANCE_CONSTRUCTOR(application) \
11extern void * __APPL_SYMBOL(application, data_start);\
12extern void * __APPL_SYMBOL(application, data_end);\
13extern void * __APPL_SYMBOL(application, bss_start);\
14extern void * __APPL_SYMBOL(application, bss_end);\
15extern void * __APPL_SYMBOL(application, vtable_start);\
16extern void * __APPL_SYMBOL(application, vtable_end);\
17extern void * __APPL_SYMBOL(application, __mmio_start);\
18extern void * __APPL_SYMBOL(application, __mmio_end);\
19extern void * __APPL_SYMBOL(application, shared_start);\
20extern void * __APPL_SYMBOL(application, shared_end);\
21\
22CMRX_APPLICATION_INSTANCE_ATTRIBUTES const struct OS_process_definition_t __APPL_SYMBOL(application, instance) = {\
23 {\
24 { &__APPL_SYMBOL(application, data_start), &__APPL_SYMBOL(application, data_end) },\
25 { &__APPL_SYMBOL(application, bss_start), &__APPL_SYMBOL(application, bss_end) },\
26 { __APPL_SYMBOL(application, mmio_start), __APPL_SYMBOL(application, mmio_end) },\
27 { __APPL_SYMBOL(application, mmio_2_start), __APPL_SYMBOL(application, mmio_2_end) },\
28 { &__APPL_SYMBOL(application, shared_start), &__APPL_SYMBOL(application, shared_end) }\
29 },\
30 { &__APPL_SYMBOL(application, vtable_start), &__APPL_SYMBOL(application, vtable_end) }\
31}
32
33#define CMRX_THREAD_AUTOCREATE_CONSTRUCTOR(application, entrypoint, data, priority, core) \
34CMRX_THREAD_AUTOCREATE_ATTRIBUTES const struct OS_thread_create_t __APPL_SYMBOL(application, thread_create_ ## entrypoint) = {\
35 &__APPL_SYMBOL(application, instance),\
36 entrypoint,\
37 data,\
38 priority,\
39 core\
40}