view TaskManager.h @ 0:5b089096921f

first commit.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 18 Dec 2009 21:57:05 +0900
parents
children aef83aed7a07
line wrap: on
line source

#ifndef _TASKMANAGER_H
#define _TASKMANAGER_H
#include <stdlib.h>
#include "List.h"

typedef List TaskList;
// inline functionのがいいか


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)

enum cpu {
	ANY = 0,
	MAIN,
	SUB,
};

/* C++CeriumでのTaskObjectにあたる  */
typedef struct _taskclass {
	Taskrun run;
	char *name;
	enum cpu cputype;
} TaskClass;

/* C++CeriumでのHTaskにあたる  */
typedef struct _Task {
	TaskClass taskclass;
	unsigned int id;	// is it needed?

	void *rbuff;
	void *wbuff;
	size_t rsize;
	size_t wsize;

	TaskList waiter;	// List of tasks waiting for me :-P
	TaskList waitee;	// List of tasks keep me waiting :-(
} Task;

extern int max_taskclass;		/* defined by USERs.  */
extern TaskClass taskclasses[];	/* defined by USERs.  */

#endif /* !_TASKMANAGER_H */