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

2002/0405/port/edf.c (diff list | history)

2002/0404/sys/src/9/port/edf.c:26,332002/0405/sys/src/9/port/edf.c:26,33 (short | long | prev | next)
2002/0315    
	[EdfDeadline] =		"Deadline", 
}; 
 
2002/0327    
static Cycintr	cycdeadline;		/* Time of next deadline */ 
static Cycintr	cycrelease;		/* Time of next release */ 
2002/0405    
static Timer	cycdeadline;		/* Time of next deadline */ 
static Timer	cycrelease;		/* Time of next release */ 
2002/0327    
 
2002/0315    
static int		initialized; 
static uvlong	fasthz;	 
2002/0404/sys/src/9/port/edf.c:70,772002/0405/sys/src/9/port/edf.c:70,77
2002/0320    
static void		setdelta(void); 
static void		testdelta(Task *thetask); 
2002/0315    
static char *	edf_testschedulability(Task *thetask); 
2002/0328    
static void		edfreleaseintr(Ureg *, Cycintr *cy); 
static void		edfdeadlineintr(Ureg*, Cycintr*); 
2002/0405    
static void		edfreleaseintr(Ureg *, Timer *cy); 
static void		edfdeadlineintr(Ureg*, Timer*); 
2002/0315    
 
void 
edf_init(void) 
2002/0404/sys/src/9/port/edf.c:214,2242002/0405/sys/src/9/port/edf.c:214,224
2002/0327    
		return; 
2002/0328    
	DPRINT("edfreleasetimer clock\n"); 
	if (cycrelease.when) 
2002/0327    
		cycintrdel(&cycrelease); 
2002/0405    
		timerdel(&cycrelease); 
2002/0327    
	cycrelease.when = t->r; 
2002/0328    
	if (cycrelease.when <= now) 
2002/0327    
		cycrelease.when = now; 
	cycintradd(&cycrelease); 
2002/0405    
	timeradd(&cycrelease); 
2002/0327    
	clockintrsched(); 
} 
 
2002/0404/sys/src/9/port/edf.c:271,2772002/0405/sys/src/9/port/edf.c:271,277
2002/0315    
		assert(0 && p == nil || nt == t); 
	} 
2002/0327    
	if (cycdeadline.when){ 
		cycintrdel(&cycdeadline); 
2002/0405    
		timerdel(&cycdeadline); 
2002/0327    
		cycdeadline.when = 0; 
		clockintrsched(); 
	} 
2002/0404/sys/src/9/port/edf.c:406,4182002/0405/sys/src/9/port/edf.c:406,418
2002/0315    
} 
 
static void 
2002/0328    
edfreleaseintr(Ureg*, Cycintr*) 
2002/0405    
edfreleaseintr(Ureg*, Timer*) 
2002/0315    
{ 
2002/0327    
	Task *t; 
 
2002/0328    
	DPRINT("%d edfreleaseintr\n", m->machno); 
2002/0327    
 
2002/0330    
	cycintrdel(&cycrelease); 
2002/0405    
	timerdel(&cycrelease); 
2002/0328    
	cycrelease.when = 0; 
2002/0330    
	clockintrsched(); 
2002/0328    
 
2002/0404/sys/src/9/port/edf.c:433,4392002/0405/sys/src/9/port/edf.c:433,439
2002/0327    
} 
 
static void 
2002/0328    
edfdeadlineintr(Ureg*, Cycintr*) 
2002/0405    
edfdeadlineintr(Ureg*, Timer*) 
2002/0327    
{ 
2002/0328    
	/* Task reached deadline */ 
 
2002/0404/sys/src/9/port/edf.c:442,4482002/0405/sys/src/9/port/edf.c:442,448
2002/0315    
 
2002/0327    
	DPRINT("%d edfdeadlineintr\n", m->machno); 
 
2002/0330    
	cycintrdel(&cycdeadline); 
2002/0405    
	timerdel(&cycdeadline); 
2002/0328    
	cycdeadline.when = 0; 
2002/0330    
	clockintrsched(); 
2002/0328    
 
2002/0404/sys/src/9/port/edf.c:743,7522002/0405/sys/src/9/port/edf.c:743,752
2002/0327    
			iunlock(&edflock); 
			return p; 
		} 
		cycintrdel(&cycdeadline); 
2002/0405    
		timerdel(&cycdeadline); 
2002/0327    
	} 
	cycdeadline.when = when; 
	cycintradd(&cycdeadline); 
2002/0405    
	timeradd(&cycdeadline); 
2002/0327    
	clockintrsched(); 
2002/0315    
	iunlock(&edflock); 
	return p; 


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