C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
 
Loading...
Searching...
No Matches
application.h
1#pragma once
2
3#include <cmrx/sys/runtime.h>
4#include <conf/kernel.h>
5#include <arch/application.h>
6#include <stddef.h>
7
8#define __APPL_SYMBOL(application, symbol) application ## _ ## symbol
9
10#define _OS_THREAD_CREATE(application, entrypoint, data, priority, core) \
11CMRX_THREAD_AUTOCREATE_CONSTRUCTOR(application, entrypoint, data, priority, core)
12
32#define VTABLE CMRX_VTABLE_SPECIFIER
33
39#define OS_APPLICATION_MMIO_RANGE(application, from, to)\
40 static void * const __APPL_SYMBOL(application, mmio_start) = (void *) (from);\
41 static void * const __APPL_SYMBOL(application, mmio_end) = (void *) (to);\
42 static void * const __APPL_SYMBOL(application, mmio_2_start) = (void *) 0;\
43 static void * const __APPL_SYMBOL(application, mmio_2_end) = (void *) 0;\
44 _Static_assert(from == 0 || to == 0 || from % (to - from) == 0, "MMIO range not size-aligned")
45
55#define OS_APPLICATION_MMIO_RANGES(application, from, to, from2, to2)\
56 static void * const __APPL_SYMBOL(application, mmio_start) = (void *) (from);\
57 static void * const __APPL_SYMBOL(application, mmio_end) = (void *) (to);\
58 static void * const __APPL_SYMBOL(application, mmio_2_start) = (void *) (from2);\
59 static void * const __APPL_SYMBOL(application, mmio_2_end) = (void *) (to2);\
60 _Static_assert(from == 0 || to == 0 || from % (to - from) == 0, "MMIO range 1 not size-aligned");\
61 _Static_assert(from == 0 || to == 0 || from2 == 0 || to2 == 0 || from2 % (to2 - from2) == 0, "MMIO range 2 not size-aligned")
62
63
70#define OS_APPLICATION(application) \
71CMRX_APPLICATION_INSTANCE_CONSTRUCTOR(application)
72
83#ifdef CMRX_ARCH_SMP_SUPPORTED
84#define OS_THREAD_CREATE(application, entrypoint, data, priority, core) \
85 _OS_THREAD_CREATE(application, entrypoint, data, priority, core)
86#else
87#define OS_THREAD_CREATE(application, entrypoint, data, priority) \
88 _OS_THREAD_CREATE(application, entrypoint, data, priority, 0)
89#endif
90
91