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 */
+