/* * Copyright (C) 2008 Philippe Gerum . * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * This file satisfies the references within the emulator code * mimicking a VxWorks-like API built upon the copperplate library. * * VxWorks is a registered trademark of Wind River Systems, Inc. */ #ifndef _XENOMAI_VXWORKS_TASKLIB_H #define _XENOMAI_VXWORKS_TASKLIB_H #include #include /* Task options: none applicable - only there for code compatibility. */ #define VX_UNBREAKABLE 0x0002 #define VX_FP_TASK 0x0008 #define VX_PRIVATE_ENV 0x0080 #define VX_NO_STACK_FILL 0x0100 #define WIND_READY 0x0 #define WIND_SUSPEND 0x1 #define WIND_PEND 0x2 #define WIND_DELAY 0x4 #define WIND_DEAD 0x8 #define WIND_STOP 0x10 /* Never reported. */ typedef uintptr_t TASK_ID; typedef void (*FUNCPTR)(long arg, ...); typedef struct WIND_TCB { void *opaque; int status; int safeCnt; int flags; FUNCPTR entry; } WIND_TCB; #ifdef __cplusplus extern "C" { #endif TASK_ID taskSpawn(const char *name, int prio, int flags, int stacksize, FUNCPTR entry, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6, long arg7, long arg8, long arg9); STATUS taskInit(WIND_TCB *pTcb, const char *name, int prio, int flags, char * stack __attribute__ ((unused)), int stacksize, FUNCPTR entry, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6, long arg7, long arg8, long arg9); STATUS taskActivate(TASK_ID tid); STATUS taskDelete(TASK_ID tid); STATUS taskDeleteForce(TASK_ID tid); STATUS taskSuspend(TASK_ID tid); STATUS taskResume(TASK_ID tid); STATUS taskPrioritySet(TASK_ID tid, int prio); STATUS taskPriorityGet(TASK_ID tid, int *pprio); void taskExit(int code); STATUS taskLock(void); STATUS taskUnlock(void); TASK_ID taskIdSelf(void); STATUS taskSafe(void); STATUS taskUnsafe(void); STATUS taskDelay(int ticks); STATUS taskIdVerify(TASK_ID tid); struct WIND_TCB *taskTcb(TASK_ID tid); int wind_task_normalize_priority(int wind_prio); int wind_task_denormalize_priority(int core_prio); #ifdef __cplusplus } #endif #endif /* !_XENOMAI_VXWORKS_TASKLIB_H */