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

1999/0612/mpc/devrtc.c (diff list | history)

1999/0608/sys/src/9/mpc/devrtc.c:10,151999/0612/sys/src/9/mpc/devrtc.c:10,16 (short | long | prev | next)
1999/0121    
enum{ 
	Qrtc = 1, 
1999/0608    
	Qnvram, 
1999/0612    
	Qnvram2, 
1999/0121    
 
	/* sccr */ 
	RTDIV=	1<<24, 
1999/0608/sys/src/9/mpc/devrtc.c:21,261999/0612/sys/src/9/mpc/devrtc.c:22,29
1999/0608    
 
	Nvoff=		4*1024,	/* where usable nvram lives */ 
	Nvsize=		4*1024, 
1999/0612    
	Nvoff2=		8*1024,	/* where usable nvram lives */ 
	Nvsize2=	4*1024, 
1999/0121    
}; 
 
static	QLock	rtclock;		/* mutex on clock operations */ 
1999/0608/sys/src/9/mpc/devrtc.c:30,351999/0612/sys/src/9/mpc/devrtc.c:33,39
1999/0121    
static Dirtab rtcdir[]={ 
	"rtc",		{Qrtc, 0},	12,	0666, 
1999/0608    
	"nvram",	{Qnvram, 0},	Nvsize,	0664, 
1999/0612    
	"nvram2",	{Qnvram2, 0},	Nvsize,	0664, 
1999/0121    
}; 
#define	NRTC	(sizeof(rtcdir)/sizeof(rtcdir[0])) 
 
1999/0608/sys/src/9/mpc/devrtc.c:77,821999/0612/sys/src/9/mpc/devrtc.c:81,87
1999/0121    
			error(Eperm); 
		break; 
1999/0608    
	case Qnvram: 
1999/0612    
	case Qnvram2: 
1999/0608    
		if(strcmp(up->user, eve)!=0) 
1999/0121    
			error(Eperm); 
		break; 
1999/0608/sys/src/9/mpc/devrtc.c:112,1171999/0612/sys/src/9/mpc/devrtc.c:117,132
1999/0608    
		memmove(buf, (uchar*)(NVRAMMEM + Nvoff + t), n); 
		iunlock(&nvrtlock); 
		return n; 
1999/0612    
	case Qnvram2: 
		if(offset >= Nvsize2) 
			return 0; 
		t = offset; 
		if(t + n > Nvsize2) 
			n = Nvsize2 - t; 
		ilock(&nvrtlock); 
		memmove(buf, (uchar*)(NVRAMMEM + Nvoff2 + t), n); 
		iunlock(&nvrtlock); 
		return n; 
1999/0121    
	} 
	error(Egreg); 
	return 0;		/* not reached */ 
1999/0608/sys/src/9/mpc/devrtc.c:157,1621999/0612/sys/src/9/mpc/devrtc.c:172,187
1999/0608    
			n = Nvsize - t; 
		ilock(&nvrtlock); 
		memmove((uchar*)(NVRAMMEM + Nvoff + offset), buf, n); 
1999/0612    
		iunlock(&nvrtlock); 
		return n; 
	case Qnvram2: 
		if(offset >= Nvsize2) 
			return 0; 
		t = offset; 
		if(t + n > Nvsize2) 
			n = Nvsize2 - t; 
		ilock(&nvrtlock); 
		memmove((uchar*)(NVRAMMEM + Nvoff2 + offset), buf, n); 
1999/0608    
		iunlock(&nvrtlock); 
		return n; 
1999/0121    
	} 


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