22#include <boilerplate/hash.h>
23#include <copperplate/threadobj.h>
24#include <copperplate/syncobj.h>
25#include <copperplate/cluster.h>
27struct 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
55static 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);
66struct psos_task *get_psos_task(u_long tid,
int *err_r);
68struct psos_task *get_psos_task_or_self(u_long tid,
int *err_r);
70void put_psos_task(
struct psos_task *task);
72int __ev_send(
struct psos_task *task,
unsigned long events);
74extern struct cluster psos_task_table;