forked from Imagelibrary/rtems
2002-03-01 Eric Norum <eric.norum@usask.ca>
* src/pthreadonce.c: Task is not preemptable while running a pthread_once init function. This is slightly less heavy handed than disabling dispatching and seems better than consuming a mutex.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2002-03-01 Eric Norum <eric.norum@usask.ca>
|
||||
|
||||
* src/pthreadonce.c: Task is not preemptable while running a
|
||||
pthread_once init function. This is slightly less heavy handed
|
||||
than disabling dispatching and seems better than consuming a mutex.
|
||||
|
||||
2002-02-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* src/getegid.c: Add #include <rtems/userenv.h>.
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <pthread.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/score/thread.h>
|
||||
|
||||
@@ -29,15 +30,16 @@ int pthread_once(
|
||||
if ( !once_control || !init_routine )
|
||||
return EINVAL;
|
||||
|
||||
_Thread_Disable_dispatch();
|
||||
|
||||
if ( !once_control->init_executed ) {
|
||||
once_control->is_initialized = TRUE;
|
||||
once_control->init_executed = TRUE;
|
||||
(*init_routine)();
|
||||
rtems_mode saveMode;
|
||||
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
|
||||
if ( !once_control->init_executed ) {
|
||||
once_control->is_initialized = TRUE;
|
||||
once_control->init_executed = TRUE;
|
||||
(*init_routine)();
|
||||
}
|
||||
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
|
||||
}
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
2002-03-01 Eric Norum <eric.norum@usask.ca>
|
||||
|
||||
* src/pthreadonce.c: Task is not preemptable while running a
|
||||
pthread_once init function. This is slightly less heavy handed
|
||||
than disabling dispatching and seems better than consuming a mutex.
|
||||
|
||||
2002-02-09 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* src/getegid.c: Add #include <rtems/userenv.h>.
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <pthread.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/score/thread.h>
|
||||
|
||||
@@ -29,15 +30,16 @@ int pthread_once(
|
||||
if ( !once_control || !init_routine )
|
||||
return EINVAL;
|
||||
|
||||
_Thread_Disable_dispatch();
|
||||
|
||||
if ( !once_control->init_executed ) {
|
||||
once_control->is_initialized = TRUE;
|
||||
once_control->init_executed = TRUE;
|
||||
(*init_routine)();
|
||||
rtems_mode saveMode;
|
||||
rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode);
|
||||
if ( !once_control->init_executed ) {
|
||||
once_control->is_initialized = TRUE;
|
||||
once_control->init_executed = TRUE;
|
||||
(*init_routine)();
|
||||
}
|
||||
rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);
|
||||
}
|
||||
|
||||
_Thread_Enable_dispatch();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user