32 #define T_CPU(cpu) (1 << (24 + (cpu & 7)))
33 #define T_CPUMASK 0xff000000
42 #define T_BLOCKED XNPEND
43 #define T_DELAYED XNDELAY
44 #define T_READY XNREADY
45 #define T_DORMANT XNDORMANT
46 #define T_STARTED XNSTARTED
47 #define T_BOOST XNBOOST
49 #define T_NOSIG XNASDI
50 #define T_WARNSW XNTRAPSW
51 #define T_RPIOFF XNRPIOFF
54 #define T_CONFORMING 0x00000200
55 #define T_JOINABLE 0x00000400
59 #define T_HOOK_START XNHOOK_THREAD_START
60 #define T_HOOK_SWITCH XNHOOK_THREAD_SWITCH
61 #define T_HOOK_DELETE XNHOOK_THREAD_DELETE
62 #define T_DESC(cookie) thread2rtask(cookie)
65 #define T_LOPRIO XNSCHED_LOW_PRIO
66 #define T_HIPRIO XNSCHED_HIGH_PRIO
68 typedef struct rt_task_placeholder {
70 unsigned long opaque2;
71 } RT_TASK_PLACEHOLDER;
90 char name[XNOBJECT_NAME_LEN];
102 #define RT_MCB_FSTORE_LIMIT 64
119 #if (defined(__KERNEL__) || defined(__XENO_SIM__)) && !defined(DOXYGEN_CPP)
121 #include <nucleus/synch.h>
123 #define XENO_TASK_MAGIC 0x55550101
125 typedef struct rt_task {
131 #define link2rtask(ln) container_of(ln, RT_TASK, link)
133 xnthread_t thread_base;
135 char rname[XNOBJECT_NAME_LEN];
147 xnarch_cpumask_t affinity;
156 #ifdef CONFIG_XENO_OPT_NATIVE_MPS
165 #ifdef CONFIG_XENO_OPT_NATIVE_MPS
174 static inline RT_TASK *thread2rtask (xnthread_t *t)
176 return t ? container_of(t, RT_TASK, thread_base) : NULL;
179 #define xeno_current_task() thread2rtask(xnpod_current_thread())
185 void __native_task_safe(RT_TASK *task);
187 void __native_task_unsafe(RT_TASK *task);
189 int __native_task_safewait(RT_TASK *task);
191 int __native_task_pkg_init(
void);
193 void __native_task_pkg_cleanup(
void);
198 void (*routine)(
void *cookie));
201 void (*routine)(
void *cookie));
205 static inline int rt_task_same(RT_TASK *task1, RT_TASK *task2)
207 return task1 == task2;
216 typedef RT_TASK_PLACEHOLDER RT_TASK;
234 task->opaque = XN_NO_HANDLE;
256 int mode) __deprecated_in_kernel__;
259 void (*fun)(
void *cookie),
316 void (*entry)(
void *cookie),