plan 9 kernel history: overview | file list | diff list

2002/0831/port/edf.h (diff list | history)

2002/0830/sys/src/9/port/edf.h:18,232002/0831/sys/src/9/port/edf.h:18,25 (short | long | prev | next)
Add List] and Head, use to replace static arrays.
rsc Fri Mar 4 12:44:25 2005
2002/0704    
typedef struct Resource		Resource; 
typedef struct Edf			Edf; 
typedef struct Taskq			Taskq; 
2002/0831    
typedef struct List			List; 
typedef struct Head			Head; 
2002/0315    
 
enum Edfstate { 
	EdfUnused,		/* task structure not in use */ 
2002/0830/sys/src/9/port/edf.h:35,402002/0831/sys/src/9/port/edf.h:37,52
2002/0315    
}; 
typedef enum Edfstate	Edfstate; 
 
2002/0831    
struct List { 
	List	*	next;	/* next in list */ 
	void	*	i;		/* item in list */ 
}; 
 
struct Head { 
	List	*next;	/* First item in list */ 
	int	n;		/* number of items in list */ 
}; 
 
2002/0315    
struct Edf { 
	/* time intervals */ 
	Ticks	D;		/* Deadline */ 
2002/0830/sys/src/9/port/edf.h:63,752002/0831/sys/src/9/port/edf.h:75,87
2002/0315    
 
struct Task { 
	QLock; 
2002/0831    
	Ref;					/* ref count for farbage collection */ 
	int		taskno;		/* task number in Qid  */ 
2002/0315    
	Edf; 
	Ticks	scheduled; 
	Schedq	runq;		/* Queue of runnable member procs */ 
	Proc *	procs[Nproc];	/* List of member procs; may contain holes */ 
	int		nproc;		/* number of them */ 
	Resource*	res[Nres];		/* List of resources; may contain holes */ 
	int		nres;			/* number of them */ 
2002/0831    
	Head	procs;		/* List of member procs */ 
	Head	res;			/* List of resources */ 
2002/0315    
	char		*user;		/* mallocated */ 
	Dirtab	dir; 
	int		flags;		/* e.g., Verbose */ 
2002/0830/sys/src/9/port/edf.h:85,1022002/0831/sys/src/9/port/edf.h:97,119
2002/0315    
 
struct Resource 
{ 
2002/0831    
	Ref; 
2002/0315    
	char	*	name; 
	Task *	tasks[Ntask];	/* may contain holes */ 
	int		ntasks; 
2002/0831    
	Head	tasks; 
2002/0320    
	Ticks	Delta; 
2002/0315    
	/* for schedulability testing */ 
2002/0320    
	Ticks	testDelta; 
2002/0315    
}; 
 
extern Lock		edftestlock;	/* for atomic admitting/expelling */ 
extern Task		tasks[Maxtasks];	/* may contain holes */ 
extern int			ntasks; 
extern Resource	resources[Maxresources];	/* may contain holes */ 
2002/0831    
struct ResourceItem { 
	List;			/* links and identifies the resource (must be first) */ 
	Ticks	C;	/* cost */ 
	Head	h;	/* sub resource items */ 
}; 
 
extern QLock		edfschedlock; 
extern Head		tasks; 
extern Head		resources; 
2002/0315    
extern int			nresources; 
extern Lock		edflock; 
extern Taskq		qwaitrelease; 
2002/0830/sys/src/9/port/edf.h:112,1142002/0831/sys/src/9/port/edf.h:129,134
2002/0315    
 
Time		ticks2time(Ticks); 
Ticks	time2ticks(Time); 
2002/0831    
int		putlist(Head*, List*); 
int		enlist(Head*, void*); 
int		delist(Head*, void*); 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)