2
|
1 #include <stdlib.h>
|
|
2 #include "List.h"
|
|
3 #include "Task.h"
|
0
|
4
|
|
5
|
|
6 /*
|
2
|
7 * User interfaces.
|
0
|
8 */
|
2
|
9
|
|
10 Task *
|
|
11 createTask(int id, char *name)
|
0
|
12 {
|
2
|
13 Task *task;
|
|
14 if (!name) name = "(no name)";
|
0
|
15
|
2
|
16 task = malloc(sizeof(Task));
|
|
17 task->id = id;
|
|
18 task->rbuff = NULL;
|
|
19 task->wbuff = NULL;
|
|
20 task->waiter = NULL;
|
|
21 task->waitee = NULL;
|
|
22 task->name = name;
|
|
23 task->cpu = ANY;
|
|
24 task->rsize = 0;
|
|
25 task->wsize = 0;
|
0
|
26
|
2
|
27 return task;
|
0
|
28 }
|
|
29
|
2
|
30 void
|
|
31 taskSetData(Task *task, void *rbuff, int rsize, void *wbuff, int wsize)
|
0
|
32 {
|
2
|
33 task->rbuff = rbuff;
|
|
34 task->wbuff = wbuff;
|
|
35 task->rsize = rsize;
|
|
36 task->wsize = wsize;
|
0
|
37 }
|
|
38
|
2
|
39 void
|
|
40 taskSetWait(Task *a, Task *b)
|
0
|
41 {
|
2
|
42 /* set a waiting for b. */
|
|
43 a->waitee = _listAddFirst(a->waitee, b);
|
|
44 b->waiter = _listAddFirst(b->waiter, a);
|
0
|
45 }
|
|
46
|