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

1998/0808/port/devcons.c (diff list | history)

1998/0731/sys/src/9/port/devcons.c:32,421998/0808/sys/src/9/port/devcons.c:32,38 (short | long | prev | next)
Remove #c/timer.
rsc Fri Mar 4 12:44:25 2005
1997/0327    
static ulong	randomread(void*, ulong); 
1996/1031    
static void	randominit(void); 
1998/0731    
static void	seedrand(void); 
1998/0617    
static long	qtimer(long, vlong); 
1995/0910    
 
1998/0617    
int qtimerentry = -1; 
vlong µoffset; 
                 
1990/0227    
void 
1991/0607    
printinit(void) 
1990/0227    
{ 
1998/0731/sys/src/9/port/devcons.c:212,2171998/0808/sys/src/9/port/devcons.c:208,214
1990/0227    
{ 
1993/1016    
	static int ctrlt, pid; 
	extern ulong etext; 
1998/0808    
	int x; 
1990/03091    
 
1990/0227    
	/* 
1991/0607    
	 * ^p hack 
1998/0731/sys/src/9/port/devcons.c:243,2491998/0808/sys/src/9/port/devcons.c:240,248
1997/0327    
				consdebug(); 
1992/0411    
			return; 
1991/0607    
		case 'p': 
1998/0808    
			x = spllo(); 
1991/0608    
			procdump(); 
1998/0808    
			splx(x); 
1991/0607    
			return; 
1995/1030    
		case 'q': 
			scheddump(); 
1998/0731/sys/src/9/port/devcons.c:361,3671998/0808/sys/src/9/port/devcons.c:360,365
1992/0321    
	Qsysname, 
1992/0428    
	Qsysstat, 
	Qtime, 
1998/0617    
	Qtimer, 
1992/0428    
	Quser, 
1990/0227    
}; 
 
1998/0731/sys/src/9/port/devcons.c:390,3971998/0808/sys/src/9/port/devcons.c:388,394
1992/0428    
	"sysname",	{Qsysname},	0,		0664, 
	"sysstat",	{Qsysstat},	0,		0666, 
	"time",		{Qtime},	NUMSIZE,	0664, 
1998/0617    
	"timer",	{Qtimer},	0,		0444, 
1993/0404    
 	"user",		{Quser},	NAMELEN,	0666, 
1998/0808    
	"user",		{Quser},	NAMELEN,	0666, 
1990/0227    
}; 
 
ulong	boottime;		/* seconds since epoch at boot */ 
1998/0731/sys/src/9/port/devcons.c:450,4621998/0808/sys/src/9/port/devcons.c:447,452
1990/0227    
consinit(void) 
{ 
1995/0913    
	randominit(); 
1998/0617    
                 
	if (qtimerentry < 0) { 
		while (consdir[++qtimerentry].qid.path != Qtimer) 
			; 
		µoffset = (vlong)1000000*rtctime() - 
			  (vlong)1000*TK2MS(MACHP(0)->ticks); 
	} 
1990/0227    
} 
 
1997/0327    
static Chan* 
1998/0731/sys/src/9/port/devcons.c:474,4821998/0808/sys/src/9/port/devcons.c:464,469
1997/0327    
static void 
1990/0227    
consstat(Chan *c, char *dp) 
{ 
1998/0617    
	if (c->qid.path == Qtimer) 
		consdir[qtimerentry].length = µoffset + 
			(vlong)1000*TK2MS(MACHP(0)->ticks); 
1997/0327    
	devstat(c, dp, consdir, nelem(consdir), devgen); 
1990/0227    
} 
 
1998/0731/sys/src/9/port/devcons.c:532,5391998/0808/sys/src/9/port/devcons.c:519,524
1990/0227    
		return n; 
1990/11211    
	switch(c->qid.path & ~CHDIR){ 
1990/0227    
	case Qdir: 
1998/0617    
		consdir[qtimerentry].length = µoffset + 
			(vlong)1000*TK2MS(MACHP(0)->ticks); 
1997/0327    
		return devdirread(c, buf, n, consdir, nelem(consdir), devgen); 
1990/0227    
 
	case Qcons: 
1998/0731/sys/src/9/port/devcons.c:621,6291998/0808/sys/src/9/port/devcons.c:606,611
1990/0227    
	case Qtime: 
1998/0617    
		return readnum((ulong)offset, buf, n, rtctime(), 12); 
1990/0227    
 
1998/0617    
	case Qtimer: 
		return qtimer(n, offset); 
                 
1991/0607    
	case Qclock: 
		k = offset; 
		if(k >= 2*NUMSIZE) 
1998/0731/sys/src/9/port/devcons.c:881,8901998/0808/sys/src/9/port/devcons.c:863,868
1992/0321    
			sysname[n-1] = 0; 
1992/0310    
		break; 
1991/0607    
 
1998/0617    
	case Qtimer: 
		error(Eperm); 
1998/0618    
		break; 
1998/0617    
                 
1990/0227    
	default: 
1991/1127    
		print("conswrite: %d\n", c->qid.path); 
1990/11211    
		error(Egreg); 
1998/0731/sys/src/9/port/devcons.c:1073,10951998/0808/sys/src/9/port/devcons.c:1051,1055
1995/0913    
 
	wakeup(&rb.producer); 
1995/0910    
 
1998/0617    
	return n; 
} 
                 
static long 
1998/0731    
qtimer(long n, vlong offset) 
{ 
1998/0617    
	/* block until time ≥ offset; 
	 * add n to offset 
	 * return increment to offset (i.e., n) 
	 */ 
	vlong time, rathole; 
                 
	for (;;) { 
		rathole = µoffset/1000; 
		time = offset/1000 - (rathole + TK2MS(MACHP(0)->ticks)); 
		if (time <= 0) break; 
		tsleep(&up->sleep, return0, 0, (long)time); 
	} 
1995/0910    
	return n; 
1991/1102    
} 


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