view 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 source

#ifndef _TASK_H
#define _TASK_H
// ユーザ側でもこのヘッダファイルをインクルードする
#include "List.h"

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