0
|
1 #ifndef _TASK_H
|
|
2 #define _TASK_H
|
2
|
3 // ユーザ側でもこのヘッダファイルをインクルードする
|
|
4 #include "List.h"
|
0
|
5
|
2
|
6 /* used by User'sTask. */
|
|
7 typedef __code (*Taskrun)(void*, void*, void*);
|
|
8 //typedef __code (*Scheduler)(TaskScheduler*,__code(*)(void*,void*,void*), void*, void*);
|
|
9 //typedef __code (*Taskrun)(_code(*)(void*,void*,void*), void*, void*);
|
|
10 //typedef __code (*Scheduler)(__code(*)(void*,void*,void*), void*, void*);
|
0
|
11 //typedef __code (*Scheduler)(Taskrun, void*, void*);
|
|
12 //typedef __code (*Taskrun)(Scheduler, void*, void*);
|
|
13 #define END (NULL)
|
|
14
|
2
|
15 /* C++CeriumでのTaskObjectにあたる */
|
|
16 typedef struct _TaskType {
|
|
17 Taskrun code;
|
|
18 char *name;
|
|
19 } TaskType;
|
|
20
|
|
21
|
|
22 /* defined by user automatically. */
|
|
23 extern const int max_tasktype;
|
|
24 extern const TaskType tasktypes[];
|
|
25
|
0
|
26 enum cpu {
|
2
|
27 ANY = 0, // not implemented yet.
|
0
|
28 MAIN,
|
|
29 SUB,
|
|
30 };
|
|
31
|
2
|
32 /* C++CeriumでのHTaskにあたるのかな */
|
|
33 typedef struct _Task {
|
|
34 char *name; // task name.
|
|
35 int typeid; // index of tasktypes array.
|
|
36 int id; // task identifier.
|
|
37
|
|
38 void *rbuff;
|
|
39 void *wbuff;
|
|
40 int rsize;
|
|
41 int wsize;
|
|
42 List *waiter; // List of tasks waiting for me :-P
|
|
43 List *waitee; // List of tasks keep me waiting :-(
|
|
44
|
|
45 enum cpu cpu;
|
|
46 } Task;
|
|
47
|
|
48 /* user interfaces. */
|
|
49 extern Task * createTask (int, char *);
|
|
50 extern void taskSetData (Task *, void *, int, void *, int);
|
|
51 extern void taskSetWait (Task *, Task *);
|
|
52
|
|
53 extern __code (*scheduler)(void*,Taskrun,void*,void*);
|
|
54
|
0
|
55 #endif /* _TASK_H */
|
2
|
56
|