22 #include <boilerplate/hash.h>
23 #include <copperplate/threadobj.h>
24 #include <copperplate/syncobj.h>
25 #include <copperplate/cluster.h>
27 struct psos_task_args {
28 void (*entry)(u_long a0, u_long a1, u_long a2, u_long a3);
35 #define PSOSTASK_NR_REGS 16
42 u_long notepad[PSOSTASK_NR_REGS];
43 struct pvlistobj timer_list;
45 char name[XNOBJECT_NAME_LEN];
46 struct psos_task_args args;
48 struct threadobj thobj;
50 struct clusterobj cobj;
53 #define task_magic 0x8181fafa
55 static inline struct psos_task *psos_task_current(
void)
57 struct threadobj *thobj = threadobj_current();
60 threadobj_get_magic(thobj) != task_magic)
63 return container_of(thobj,
struct psos_task, thobj);
66 struct psos_task *get_psos_task(u_long tid,
int *err_r);
68 struct psos_task *get_psos_task_or_self(u_long tid,
int *err_r);
70 void put_psos_task(
struct psos_task *task);
72 int __ev_send(
struct psos_task *task,
unsigned long events);
74 extern struct cluster psos_task_table;