diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-11-09 22:07:23 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-11-09 22:07:23 +0000 |
commit | 352c9b2035e32e56f10f261d94955d97f4ab0f1c (patch) | |
tree | f433e95ae0ab8d8854ea19b7f4bfab3ffb431726 /c/src/exec/itron/src/sta_tsk.c | |
parent | Fixed warning where initialized default POSIX API structure did (diff) | |
download | rtems-352c9b2035e32e56f10f261d94955d97f4ab0f1c.tar.bz2 |
This patch adds the basic framework for the ITRON 3.0 API implementation
for RTEMS.
Diffstat (limited to 'c/src/exec/itron/src/sta_tsk.c')
-rw-r--r-- | c/src/exec/itron/src/sta_tsk.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/c/src/exec/itron/src/sta_tsk.c b/c/src/exec/itron/src/sta_tsk.c new file mode 100644 index 0000000000..91a6586c0e --- /dev/null +++ b/c/src/exec/itron/src/sta_tsk.c @@ -0,0 +1,84 @@ +/* + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include <itron.h> + +#include <rtems/score/thread.h> +#include <rtems/score/userext.h> +#include <rtems/score/wkspace.h> +#include <rtems/score/apiext.h> +#include <rtems/score/sysstate.h> + +#include <rtems/itron/task.h> + + +/* + * sta_tsk - Start Task + */ + +/* + * XXX - How Do I know when these happen ??? + E_NOEXS Object does not exist (the task specified by tskid does not exist) + E_OACV Object access violation (A tskid less than -4 was specified from + a user task. This is implementation dependent.) + E_OBJ Invalid object state (the target task is not in DORMANT state) + EN_OBJNO An object number which could not be accessed on the target node + is specified. XXX Should never get on a single processor?? + EN_CTXID Specified an object on another node when the system call was + issued from a task in dispatch disabled state or from a task- + independent portionXXX Should never get on a single processor?? + EN_PAR A value outside the range supported by the target node and/or + transmission packet format was specified as a parameter (a value + outside supported range was specified for stacd) +XXX- What does _ITRON_Task_Get return on an invalid id and how do you know + if it is E_ID, E_NOEXS, E_OACV +*/ + +ER sta_tsk( + ID tskid, + INT stacd +) +{ + register Thread_Control *the_thread; + Objects_Locations location; + boolean status; + + the_thread = _ITRON_Task_Get( tskid, &location ); + switch ( location ) { + case OBJECTS_REMOTE: + case OBJECTS_ERROR: + return E_ID; /* XXX */ + + case OBJECTS_LOCAL: + status = _Thread_Start( + the_thread, + THREAD_START_NUMERIC, /* XXX should be able to say we have no arg */ + the_thread->Start.entry_point, + 0, /* XXX supercore forces us to have an arg */ + 0 /* unused */ + ); + + /* + * Wrong state XXX + */ + + if ( !status ) { + _Thread_Enable_dispatch(); + return E_OBJ; + } + + _Thread_Enable_dispatch(); + return E_OK; + } + + return E_OBJ; /* unreached - only to remove warnings */ +} + + + + |