Mechanisms provided for application designer to statically initialize objects.
These mechanisms are provided, so that various structures are generated into application image. These replace need to call os routines manually. Currently it is possible to statically initialize processes and threads.
#define | __APPL_SYMBOL(application, symbol) application ## _ ## symbol |
#define | VTABLE __attribute__((section(".vtable."))) const |
#define | OS_APPLICATION_MMIO_RANGE(application, from, to) |
#define | OS_APPLICATION_MMIO_RANGES(application, from, to, from2, to2) |
#define | OS_APPLICATION(application) |
Declare userspace process. | |
#define | OS_THREAD_CREATE(application, entrypoint, data, priority) |
Thread autostart facility. | |
#define __APPL_SYMBOL | ( | application, | |
symbol | |||
) | application ## _ ## symbol |
#define OS_APPLICATION | ( | application | ) |
Declare userspace process.
This will create userspace process entry in process table. Process is used to contain information on MPU configuration all threads bound to this process can use.
#define OS_APPLICATION_MMIO_RANGE | ( | application, | |
from, | |||
to | |||
) |
#define OS_APPLICATION_MMIO_RANGES | ( | application, | |
from, | |||
to, | |||
from2, | |||
to2 | |||
) |
#define OS_THREAD_CREATE | ( | application, | |
entrypoint, | |||
data, | |||
priority | |||
) |
Thread autostart facility.
Use this to automatically create thread upon kernel start. With this you don't need to call thread_create() explicitly. Kernel will create and initialize thread for you.
application | name of process/application you want to bind your thread to. |
entrypoint | entrypoint function name. This function will be given control once thread starts. |
data | user-defined data passed to entrypoint function. |
priority | thread priority of newly created thread |
#define VTABLE __attribute__((section(".vtable."))) const |