diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-19 17:18:42 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-22 16:57:26 +0200 |
commit | a9cc1beb42776b7e6ac01792e070b4d6703aef39 (patch) | |
tree | f8f3ddf7fe01de745ba00ff1602f7b43dc053578 /cpukit/posix/src | |
parent | posix: Statically init _POSIX_signals_Alarm_timer (diff) | |
download | rtems-a9cc1beb42776b7e6ac01792e070b4d6703aef39.tar.bz2 |
posix: Protect alarm()
Use thread dispatch disable/enable to ensure thread level mutual
exlusion.
Diffstat (limited to 'cpukit/posix/src')
-rw-r--r-- | cpukit/posix/src/alarm.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/cpukit/posix/src/alarm.c b/cpukit/posix/src/alarm.c index c671b9e161..be3a334f37 100644 --- a/cpukit/posix/src/alarm.c +++ b/cpukit/posix/src/alarm.c @@ -57,6 +57,8 @@ unsigned int alarm( the_timer = &_POSIX_signals_Alarm_timer; + _Thread_Disable_dispatch(); + state = _Watchdog_Remove( the_timer ); if ( (state == WATCHDOG_ACTIVE) || (state == WATCHDOG_REMOVE_IT) ) { /* @@ -72,5 +74,7 @@ unsigned int alarm( if ( seconds ) _Watchdog_Insert_seconds( the_timer, seconds ); + _Thread_Enable_dispatch(); + return remaining; } |