Xenomai 3.3.2
Loading...
Searching...
No Matches
taskLib.h
1/*
2 * Copyright (C) 2008 Philippe Gerum <rpm@xenomai.org>.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17 *
18 * This file satisfies the references within the emulator code
19 * mimicking a VxWorks-like API built upon the copperplate library.
20 *
21 * VxWorks is a registered trademark of Wind River Systems, Inc.
22 */
23
24#ifndef _XENOMAI_VXWORKS_TASKLIB_H
25#define _XENOMAI_VXWORKS_TASKLIB_H
26
27#include <pthread.h>
28#include <vxworks/types.h>
29
30/* Task options: none applicable - only there for code compatibility. */
31#define VX_UNBREAKABLE 0x0002
32#define VX_FP_TASK 0x0008
33#define VX_PRIVATE_ENV 0x0080
34#define VX_NO_STACK_FILL 0x0100
35
36#define WIND_READY 0x0
37#define WIND_SUSPEND 0x1
38#define WIND_PEND 0x2
39#define WIND_DELAY 0x4
40#define WIND_DEAD 0x8
41#define WIND_STOP 0x10 /* Never reported. */
42
43typedef uintptr_t TASK_ID;
44
45typedef void (*FUNCPTR)(long arg, ...);
46
47typedef struct WIND_TCB {
48 void *opaque;
49 int status;
50 int safeCnt;
51 int flags;
52 FUNCPTR entry;
53} WIND_TCB;
54
55#ifdef __cplusplus
56extern "C" {
57#endif
58
59TASK_ID taskSpawn(const char *name,
60 int prio,
61 int flags,
62 int stacksize,
63 FUNCPTR entry,
64 long arg0, long arg1, long arg2, long arg3, long arg4,
65 long arg5, long arg6, long arg7, long arg8, long arg9);
66
67STATUS taskInit(WIND_TCB *pTcb,
68 const char *name,
69 int prio,
70 int flags,
71 char * stack __attribute__ ((unused)),
72 int stacksize,
73 FUNCPTR entry,
74 long arg0, long arg1, long arg2, long arg3, long arg4,
75 long arg5, long arg6, long arg7, long arg8, long arg9);
76
77STATUS taskActivate(TASK_ID tid);
78
79STATUS taskDelete(TASK_ID tid);
80
81STATUS taskDeleteForce(TASK_ID tid);
82
83STATUS taskSuspend(TASK_ID tid);
84
85STATUS taskResume(TASK_ID tid);
86
87STATUS taskPrioritySet(TASK_ID tid,
88 int prio);
89
90STATUS taskPriorityGet(TASK_ID tid,
91 int *pprio);
92
93void taskExit(int code);
94
95STATUS taskLock(void);
96
97STATUS taskUnlock(void);
98
99TASK_ID taskIdSelf(void);
100
101STATUS taskSafe(void);
102
103STATUS taskUnsafe(void);
104
105STATUS taskDelay(int ticks);
106
107STATUS taskIdVerify(TASK_ID tid);
108
109struct WIND_TCB *taskTcb(TASK_ID tid);
110
111int wind_task_normalize_priority(int wind_prio);
112
113int wind_task_denormalize_priority(int core_prio);
114
115#ifdef __cplusplus
116}
117#endif
118
119#endif /* !_XENOMAI_VXWORKS_TASKLIB_H */