Mercurial > hg > Members > kent > CbCTaskManager
diff Task.h @ 2:803d6bf22e6d default tip
second commit.
it's far to complete..
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Dec 2009 16:19:56 +0900 |
parents | 5b089096921f |
children |
line wrap: on
line diff
--- a/Task.h Sun Dec 20 20:46:53 2009 +0900 +++ b/Task.h Tue Dec 22 16:19:56 2009 +0900 @@ -1,16 +1,56 @@ #ifndef _TASK_H #define _TASK_H +// ユーザ側でもこのヘッダファイルをインクルードする +#include "List.h" -typedef __code (*Taskrun)(__code(*)(void*,void*,void*), void*, void*); -typedef __code (*Scheduler)(__code(*)(void*,void*,void*), void*, void*); +/* used by User'sTask. */ +typedef __code (*Taskrun)(void*, void*, void*); +//typedef __code (*Scheduler)(TaskScheduler*,__code(*)(void*,void*,void*), void*, void*); +//typedef __code (*Taskrun)(_code(*)(void*,void*,void*), void*, void*); +//typedef __code (*Scheduler)(__code(*)(void*,void*,void*), void*, void*); //typedef __code (*Scheduler)(Taskrun, void*, void*); //typedef __code (*Taskrun)(Scheduler, void*, void*); #define END (NULL) +/* C++CeriumでのTaskObjectにあたる */ +typedef struct _TaskType { + Taskrun code; + char *name; +} TaskType; + + +/* defined by user automatically. */ +extern const int max_tasktype; +extern const TaskType tasktypes[]; + enum cpu { - ANY = 0, + ANY = 0, // not implemented yet. MAIN, SUB, }; +/* C++CeriumでのHTaskにあたるのかな */ +typedef struct _Task { + char *name; // task name. + int typeid; // index of tasktypes array. + int id; // task identifier. + + void *rbuff; + void *wbuff; + int rsize; + int wsize; + List *waiter; // List of tasks waiting for me :-P + List *waitee; // List of tasks keep me waiting :-( + + enum cpu cpu; +} Task; + +/* user interfaces. */ +extern Task * createTask (int, char *); +extern void taskSetData (Task *, void *, int, void *, int); +extern void taskSetWait (Task *, Task *); + +extern __code (*scheduler)(void*,Taskrun,void*,void*); + #endif /* _TASK_H */ +