summaryrefslogtreecommitdiff
path: root/cpukit/score/src/thread.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-12-14 13:17:19 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-12-14 13:17:19 +0000
commit9fa3cf0db84cbabdb639cdeb7565f4c3ca3bc562 (patch)
tree01dd8f3965e89b4f12c701aebe38eb6de63acc2c /cpukit/score/src/thread.c
parentf55595e489207cd8ff6e3db8bf5a78851d9b1d35 (diff)
2011-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
PR 1924/cpukit * sapi/include/rtems/config.h: Added stack_allocate_init_hook to rtems_configuration_table. * sapi/include/confdefs.h: Added CONFIGURE_TASK_STACK_FROM_ALLOCATOR and CONFIGURE_TASK_STACK_ALLOCATOR_INIT defines. Set default stack allocator and free hook to _Workspace_Allocate() and _Workspace_Free() respectively. * score/src/thread.c, score/src/threadstackallocate.c, score/src/threadstackfree.c: Update due to API changes.
Diffstat (limited to 'cpukit/score/src/thread.c')
-rw-r--r--cpukit/score/src/thread.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/cpukit/score/src/thread.c b/cpukit/score/src/thread.c
index 3736f6eda8..613ef77e92 100644
--- a/cpukit/score/src/thread.c
+++ b/cpukit/score/src/thread.c
@@ -49,30 +49,29 @@
void _Thread_Handler_initialization(void)
{
- uint32_t ticks_per_timeslice;
- uint32_t maximum_extensions;
+ uint32_t ticks_per_timeslice =
+ rtems_configuration_get_ticks_per_timeslice();
+ uint32_t maximum_extensions =
+ rtems_configuration_get_maximum_extensions();
+ rtems_stack_allocate_init_hook stack_allocate_init_hook =
+ rtems_configuration_get_stack_allocate_init_hook();
uint32_t maximum_internal_threads;
#if defined(RTEMS_MULTIPROCESSING)
- uint32_t maximum_proxies;
+ uint32_t maximum_proxies =
+ _Configuration_MP_table->maximum_proxies;
#endif
- ticks_per_timeslice = Configuration.ticks_per_timeslice;
- maximum_extensions = Configuration.maximum_extensions;
- #if defined(RTEMS_MULTIPROCESSING)
- maximum_proxies = _Configuration_MP_table->maximum_proxies;
- #endif
- /*
- * BOTH stacks hooks must be set or both must be NULL.
- * Do not allow mixture.
- */
- if ( !( (!Configuration.stack_allocate_hook)
- == (!Configuration.stack_free_hook) ) )
+ if ( rtems_configuration_get_stack_allocate_hook() == NULL ||
+ rtems_configuration_get_stack_free_hook() == NULL)
_Internal_error_Occurred(
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
+ if ( stack_allocate_init_hook != NULL )
+ (*stack_allocate_init_hook)( rtems_configuration_get_stack_space_size() );
+
_Thread_Dispatch_necessary = false;
_Thread_Executing = NULL;
_Thread_Heir = NULL;