diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-04-09 12:12:13 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-17 17:42:25 +0200 |
commit | 6942e5f99171d1cb38c2c573aba8cb9212d7efd8 (patch) | |
tree | f49a2afc076013602f4d437784391415cb6ed6a6 /cpukit/include/rtems/confdefs | |
parent | CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE (diff) | |
download | rtems-6942e5f99171d1cb38c2c573aba8cb9212d7efd8.tar.bz2 |
rtems: Add rtems_task_construct()
In contrast to rtems_task_create() this function constructs a task with
a user-provided task storage area. The new directive uses a
configuration structure instead of individual parameters.
Add RTEMS_TASK_STORAGE_SIZE() to calculate the recommended size of a
task storage area based on the task attributes and the size dedicated to
the task stack and thread-local storage. This macro may allow future
extensions without breaking the API.
Add application configuration option
CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE to adjust RTEMS
Workspace size estimate.
Update #3959.
Diffstat (limited to 'cpukit/include/rtems/confdefs')
-rw-r--r-- | cpukit/include/rtems/confdefs/threads.h | 8 | ||||
-rw-r--r-- | cpukit/include/rtems/confdefs/wkspace.h | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/cpukit/include/rtems/confdefs/threads.h b/cpukit/include/rtems/confdefs/threads.h index 9e34696e61..8f72407695 100644 --- a/cpukit/include/rtems/confdefs/threads.h +++ b/cpukit/include/rtems/confdefs/threads.h @@ -60,6 +60,14 @@ #define _CONFIGURE_TASKS ( CONFIGURE_MAXIMUM_TASKS + _CONFIGURE_LIBBLOCK_TASKS ) +#ifndef CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE + #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE 0 +#endif + +#if CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE > CONFIGURE_MAXIMUM_TASKS + #error "CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE shall be less than or equal to CONFIGURE_MAXIMUM_TASKS" +#endif + #ifndef CONFIGURE_MAXIMUM_POSIX_THREADS #define CONFIGURE_MAXIMUM_POSIX_THREADS 0 #endif diff --git a/cpukit/include/rtems/confdefs/wkspace.h b/cpukit/include/rtems/confdefs/wkspace.h index de476dbf82..3b464899dc 100644 --- a/cpukit/include/rtems/confdefs/wkspace.h +++ b/cpukit/include/rtems/confdefs/wkspace.h @@ -100,7 +100,9 @@ + _CONFIGURE_POSIX_INIT_THREAD_STACK_EXTRA \ + _CONFIGURE_LIBBLOCK_TASKS_STACK_EXTRA \ + CONFIGURE_EXTRA_TASK_STACKS \ - + rtems_resource_maximum_per_allocation( _CONFIGURE_TASKS ) \ + + rtems_resource_maximum_per_allocation( \ + _CONFIGURE_TASKS - CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE \ + ) \ * _Configure_From_stackspace( CONFIGURE_MINIMUM_TASK_STACK_SIZE ) \ + rtems_resource_maximum_per_allocation( CONFIGURE_MAXIMUM_POSIX_THREADS ) \ * _Configure_From_stackspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) \ |