C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
Loading...
Searching...
No Matches
application.h
1
#pragma once
2
3
/*
4
* RISC-V HAL application metadata placement.
5
*
6
* The RP2350 RISC-V linker fragment defines .applications and .thread_create
7
* sections and boundary symbols consumed by CMRX startup.
8
*/
9
#define CMRX_VTABLE_SPECIFIER __attribute__((section(".vtable."))) const
10
11
#define CMRX_APPLICATION_INSTANCE_ATTRIBUTES __attribute__((used, section(".applications")))
12
#define CMRX_THREAD_AUTOCREATE_ATTRIBUTES __attribute__((used, section(".thread_create")))
13
14
#define CMRX_APPLICATION_INSTANCE_CONSTRUCTOR(application) \
15
void * __APPL_SYMBOL(application, data_start) = (void *)1; \
16
void * __APPL_SYMBOL(application, data_end) = (void *)1; \
17
void * __APPL_SYMBOL(application, bss_start) = (void *)1; \
18
void * __APPL_SYMBOL(application, bss_end) = (void *)1; \
19
void * __APPL_SYMBOL(application, shared_start) = (void *)1; \
20
void * __APPL_SYMBOL(application, shared_end) = (void *)1; \
21
void * __APPL_SYMBOL(application, vtable_start) = (void *)1; \
22
void * __APPL_SYMBOL(application, vtable_end) = (void *)1; \
23
CMRX_APPLICATION_INSTANCE_ATTRIBUTES const struct OS_process_definition_t __APPL_SYMBOL(application, instance) = { \
24
{ \
25
{ &__APPL_SYMBOL(application, data_start), &__APPL_SYMBOL(application, data_end) }, \
26
{ &__APPL_SYMBOL(application, bss_start), &__APPL_SYMBOL(application, bss_end) }, \
27
{ __APPL_SYMBOL(application, mmio_start), __APPL_SYMBOL(application, mmio_end) }, \
28
{ __APPL_SYMBOL(application, mmio_2_start), __APPL_SYMBOL(application, mmio_2_end) }, \
29
{ &__APPL_SYMBOL(application, shared_start), &__APPL_SYMBOL(application, shared_end) } \
30
}, \
31
{ &__APPL_SYMBOL(application, vtable_start), &__APPL_SYMBOL(application, vtable_end) } \
32
}
33
34
#define CMRX_THREAD_AUTOCREATE_CONSTRUCTOR(application, entrypoint, data, priority, core) \
35
CMRX_THREAD_AUTOCREATE_ATTRIBUTES const struct OS_thread_create_t __APPL_SYMBOL(application, thread_create_ ## entrypoint) = { \
36
&__APPL_SYMBOL(application, instance), \
37
entrypoint, \
38
data, \
39
priority, \
40
core \
41
}
src
os
arch
riscv
hal
arch
application.h
Generated by
1.9.8