summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/taskinitusers.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-02-14 09:31:44 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-02-25 07:15:18 +0100
commit9520ec3a2aab575e264410d1ce95c468897c3bc9 (patch)
tree9bf686e89d8a2d23e69f110674a1141a3e7f985c /cpukit/rtems/src/taskinitusers.c
parentconfig: Remove CONFIGURE_HAS_OWN_INIT_TASK_TABLE (diff)
downloadrtems-9520ec3a2aab575e264410d1ce95c468897c3bc9.tar.bz2
config: Simplify initialization task config
With the removal of the CONFIGURE_HAS_OWN_INIT_TASK_TABLE configuration option at most one Classic API user initialization task can be configured. Provide an RTEMS API configuration table for backward compatibility. Update #3873.
Diffstat (limited to 'cpukit/rtems/src/taskinitusers.c')
-rw-r--r--cpukit/rtems/src/taskinitusers.c102
1 files changed, 34 insertions, 68 deletions
diff --git a/cpukit/rtems/src/taskinitusers.c b/cpukit/rtems/src/taskinitusers.c
index f72428d77c..0645de324a 100644
--- a/cpukit/rtems/src/taskinitusers.c
+++ b/cpukit/rtems/src/taskinitusers.c
@@ -18,79 +18,45 @@
#include "config.h"
#endif
-#include <rtems/config.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/support.h>
-#include <rtems/rtems/modes.h>
-#include <rtems/score/assert.h>
-#include <rtems/score/stack.h>
#include <rtems/rtems/tasksimpl.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/wkspace.h>
-
-/*
- * _RTEMS_tasks_Initialize_user_tasks_body
- *
- * This routine creates and starts all configured user
- * initialization threads.
- *
- * Input parameters: NONE
- *
- * Output parameters: NONE
- */
+#include <rtems/score/assert.h>
+#include <rtems/score/threadimpl.h>
+#include <rtems/score/interr.h>
-void _RTEMS_tasks_Initialize_user_tasks_body( void )
+void _RTEMS_tasks_Initialize_user_task( void )
{
- uint32_t index;
- uint32_t maximum;
- rtems_id id;
- rtems_status_code return_value;
- rtems_initialization_tasks_table *user_tasks;
- rtems_task_entry entry_point;
-
- /*
- * Move information into local variables
- */
- user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
- maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
-
- /*
- * Verify that we have a set of user tasks to iterate
- */
- if ( !user_tasks )
- return;
-
- /*
- * Now iterate over the initialization tasks and create/start them.
- */
- for ( index=0 ; index < maximum ; index++ ) {
- return_value = rtems_task_create(
- user_tasks[ index ].name,
- user_tasks[ index ].initial_priority,
- user_tasks[ index ].stack_size,
- user_tasks[ index ].mode_set,
- user_tasks[ index ].attribute_set,
- &id
- );
- if ( !rtems_is_status_successful( return_value ) ) {
- _Internal_error( INTERNAL_ERROR_RTEMS_INIT_TASK_CREATE_FAILED );
- }
+ rtems_id id;
+ rtems_status_code return_value;
+ const rtems_initialization_tasks_table *user_task;
+ rtems_task_entry entry_point;
+
+ user_task = &_RTEMS_tasks_User_task_table;
+ return_value = rtems_task_create(
+ user_task->name,
+ user_task->initial_priority,
+ user_task->stack_size,
+ user_task->mode_set,
+ user_task->attribute_set,
+ &id
+ );
+ if ( !rtems_is_status_successful( return_value ) ) {
+ _Internal_error( INTERNAL_ERROR_RTEMS_INIT_TASK_CREATE_FAILED );
+ }
- entry_point = user_tasks[ index ].entry_point;
- if ( entry_point == NULL ) {
- _Internal_error( INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL );
- }
+ entry_point = user_task->entry_point;
+ if ( entry_point == NULL ) {
+ _Internal_error( INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL );
+ }
- return_value = rtems_task_start(
- id,
- entry_point,
- user_tasks[ index ].argument
- );
- _Assert( rtems_is_status_successful( return_value ) );
- (void) return_value;
+ return_value = rtems_task_start(
+ id,
+ entry_point,
+ user_task->argument
+ );
+ _Assert( rtems_is_status_successful( return_value ) );
+ (void) return_value;
- if ( _Thread_Global_constructor == 0 ) {
- _Thread_Global_constructor = id;
- }
+ if ( _Thread_Global_constructor == 0 ) {
+ _Thread_Global_constructor = id;
}
}