diff options
Diffstat (limited to 'cpukit/itron/src/dly_tsk.c')
-rw-r--r-- | cpukit/itron/src/dly_tsk.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/cpukit/itron/src/dly_tsk.c b/cpukit/itron/src/dly_tsk.c new file mode 100644 index 0000000000..8c32613206 --- /dev/null +++ b/cpukit/itron/src/dly_tsk.c @@ -0,0 +1,50 @@ +/* + * COPYRIGHT (c) 1989-2007. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include <rtems/itron.h> + +#include <rtems/score/thread.h> +#include <rtems/score/tod.h> + +#include <rtems/itron/time.h> + +/* + * dly_tsk - Delay Task + */ + +ER dly_tsk( + DLYTIME dlytim +) +{ + Watchdog_Interval ticks; + + ticks = TOD_MILLISECONDS_TO_TICKS(dlytim); + + _Thread_Disable_dispatch(); + if ( ticks == 0 ) { + _Thread_Yield_processor(); + } else { + _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); + _Watchdog_Initialize( + &_Thread_Executing->Timer, + _Thread_Delay_ended, + _Thread_Executing->Object.id, + NULL + ); + _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); + } + _Thread_Enable_dispatch(); + return E_OK; +} |