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

alphapc/devvga.c (diff list | history)

1999/0415/sys/src/9/alphapc/devvga.c:103,1091999/0512/sys/src/9/alphapc/devvga.c:103,114 (short | long)
1999/0415    
		else 
			s = "off"; 
		len += snprint(p+len, READSTR-len, "hwgc: %s\n", s); 
		snprint(p+len, READSTR-len, "addr: 0x%lux\n", scr->aperture); 
1999/0512    
		if(scr->pciaddr) 
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
				scr->pciaddr); 
		else 
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
				scr->aperture); 
1999/0415    
 
		n = readstr(offset, a, n, p); 
		poperror(); 
1999/0512/sys/src/9/alphapc/devvga.c:157,1632000/0308/sys/src/9/alphapc/devvga.c:157,163 (short | long)
1999/0415    
	extern VGAdev *vgadev[]; 
	extern VGAcur *vgacur[]; 
 
	n = parsefields(a, field, 4, " "); 
2000/0308    
	n = getfields(a, field, 4, 1, " "); 
1999/0415    
	if(n < 2) 
		error(Ebadarg); 
 
2000/0308/sys/src/9/alphapc/devvga.c:93,1012000/0330/sys/src/9/alphapc/devvga.c:93,101 (short | long)
1999/0415    
			s = scr->dev->name; 
		else 
			s = "cga"; 
		len = snprint(p, READSTR, "type: %s\n", s); 
2000/0330    
		len = snprint(p, READSTR, "type %s\n", s); 
1999/0415    
		if(scr->gscreen) 
			len += snprint(p+len, READSTR-len, "size: %dx%dx%d\n", 
2000/0330    
			len += snprint(p+len, READSTR-len, "size %dx%dx%d\n", 
1999/0415    
				scr->gscreen->r.max.x, scr->gscreen->r.max.y, 
				1<<scr->gscreen->ldepth); 
		if(scr->cur) 
2000/0308/sys/src/9/alphapc/devvga.c:102,1132000/0330/sys/src/9/alphapc/devvga.c:102,113
1999/0415    
			s = scr->cur->name; 
		else 
			s = "off"; 
		len += snprint(p+len, READSTR-len, "hwgc: %s\n", s); 
2000/0330    
		len += snprint(p+len, READSTR-len, "hwgc %s\n", s); 
1999/0512    
		if(scr->pciaddr) 
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
2000/0330    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", 
1999/0512    
				scr->pciaddr); 
		else 
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
2000/0330    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", 
1999/0512    
				scr->aperture); 
1999/0415    
 
		n = readstr(offset, a, n, p); 
2000/0330/sys/src/9/alphapc/devvga.c:14,372000/0401/sys/src/9/alphapc/devvga.c:14,40 (short | long)
1999/0415    
#include <cursor.h> 
#include "screen.h" 
 
2000/0401    
extern uchar	*vgabios; 
 
1999/0415    
enum { 
	Qdir, 
	Qvgaiob, 
	Qvgaiow, 
	Qvgaiol, 
	Qvgactl, 
2000/0401    
	Qvgabios, 
1999/0415    
}; 
 
static Dirtab vgadir[] = { 
	"vgaiob",	{ Qvgaiob, 0 },		0,	0660, 
	"vgaiow",	{ Qvgaiow, 0 },		0,	0660, 
	"vgaiol",	{ Qvgaiol, 0 },		0,	0660, 
	"vgactl",	{ Qvgactl, 0 },		0,	0660, 
2000/0401    
	"vgabios",	{ Qvgabios, 0 },		0x10000,	0440, 
1999/0415    
}; 
 
static void 
vgareset(void) 
{ 
2000/0401    
	/* reserve the 'standard' vga registers */ 
	if(ioalloc(0x2b0, 0x2df-0x2b0+1, 0, "vga") < 0) 
		panic("vga ports already allocated");  
	if(ioalloc(0x3c0, 0x3da-0x3c0+1, 0, "vga") < 0) 
		panic("vga ports already allocated");  
1999/0415    
	conf.monitor = 1; 
} 
 
2000/0330/sys/src/9/alphapc/devvga.c:69,782000/0401/sys/src/9/alphapc/devvga.c:72,79
1999/0415    
static long 
vgaread(Chan* c, void* a, long n, vlong off) 
{ 
	int len, port; 
2000/0401    
	int len; 
1999/0415    
	char *p, *s; 
	ushort *sp; 
	ulong *lp; 
	VGAscr *scr; 
	ulong offset = off; 
 
2000/0330/sys/src/9/alphapc/devvga.c:93,1132000/0401/sys/src/9/alphapc/devvga.c:94,114
1999/0415    
			s = scr->dev->name; 
		else 
			s = "cga"; 
2000/0330    
		len = snprint(p, READSTR, "type %s\n", s); 
2000/0401    
		len = snprint(p, READSTR, "type: %s\n", s); 
1999/0415    
		if(scr->gscreen) 
2000/0330    
			len += snprint(p+len, READSTR-len, "size %dx%dx%d\n", 
2000/0401    
			len += snprint(p+len, READSTR-len, "size: %dx%dx%d\n", 
1999/0415    
				scr->gscreen->r.max.x, scr->gscreen->r.max.y, 
				1<<scr->gscreen->ldepth); 
2000/0401    
				scr->gscreen->depth); 
1999/0415    
		if(scr->cur) 
			s = scr->cur->name; 
		else 
			s = "off"; 
2000/0330    
		len += snprint(p+len, READSTR-len, "hwgc %s\n", s); 
2000/0401    
		len += snprint(p+len, READSTR-len, "hwgc: %s\n", s); 
1999/0512    
		if(scr->pciaddr) 
2000/0330    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", 
2000/0401    
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
1999/0512    
				scr->pciaddr); 
		else 
2000/0330    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", 
2000/0401    
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
1999/0512    
				scr->aperture); 
1999/0415    
 
		n = readstr(offset, a, n, p); 
2000/0330/sys/src/9/alphapc/devvga.c:116,1452000/0401/sys/src/9/alphapc/devvga.c:117,134
1999/0415    
 
		return n; 
 
	case Qvgaiob: 
		port = offset; 
		for(p = a; port < offset+n; port++) 
			*p++ = inb(port); 
2000/0401    
	case Qvgabios: 
		if(vgabios == nil) 
			error(Egreg); 
		if(offset&0x80000000) 
			offset &= ~0x800E0000; 
		if(offset+n > 0x10000) 
			n = 0x10000-offset; 
		if(n < 0) 
			return 0; 
		memmove(a, vgabios+offset, n); 
1999/0415    
		return n; 
 
	case Qvgaiow: 
		if((n & 0x01) || (offset & 0x01)) 
			error(Ebadarg); 
		n /= 2; 
		sp = a; 
		for(port = offset; port < offset+n; port += 2) 
			*sp++ = ins(port); 
		return n*2; 
                 
	case Qvgaiol: 
		if((n & 0x03) || (offset & 0x03)) 
			error(Ebadarg); 
		n /= 4; 
		lp = a; 
		for(port = offset; port < offset+n; port += 4) 
			*lp++ = inl(port); 
		return n*4; 
                 
	default: 
		error(Egreg); 
		break; 
2000/0330/sys/src/9/alphapc/devvga.c:148,1642000/0401/sys/src/9/alphapc/devvga.c:137,157
1999/0415    
	return 0; 
} 
 
2000/0401    
static char Ebusy[] = "vga already configured"; 
 
1999/0415    
static void 
vgactl(char* a) 
{ 
	int align, i, n, size, x, y, z; 
	char *field[4], *p; 
2000/0401    
	char *chanstr, *field[6], *p; 
	ulong chan; 
1999/0415    
	VGAscr *scr; 
	extern VGAdev *vgadev[]; 
	extern VGAcur *vgacur[]; 
2000/0401    
	Rectangle r; 
1999/0415    
 
2000/0308    
	n = getfields(a, field, 4, 1, " "); 
1999/0415    
	if(n < 2) 
2000/0401    
	n = getfields(a, field, nelem(field), 1, " "); 
	if(n < 1) 
1999/0415    
		error(Ebadarg); 
 
	scr = &vgascreen[0]; 
2000/0330/sys/src/9/alphapc/devvga.c:165,1702000/0401/sys/src/9/alphapc/devvga.c:158,168
1999/0415    
	if(strcmp(field[0], "hwgc") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
2000/0401    
 
		/* BUG: drawinit should become a different message rather than piggybacking */ 
		if(scr && scr->dev && scr->dev->drawinit) 
			scr->dev->drawinit(scr); 
 
1999/0415    
		if(strcmp(field[1], "off") == 0){ 
			lock(&cursor); 
			if(scr->cur){ 
2000/0330/sys/src/9/alphapc/devvga.c:205,2122000/0401/sys/src/9/alphapc/devvga.c:203,213
1999/0415    
		} 
	} 
	else if(strcmp(field[0], "size") == 0){ 
		if(n < 2) 
2000/0401    
		if(n < 3) 
1999/0415    
			error(Ebadarg); 
2000/0401    
		if(drawhasclients()) 
			error(Ebusy); 
 
1999/0415    
		x = strtoul(field[1], &p, 0); 
		if(x == 0 || x > 2048) 
			error(Ebadarg); 
2000/0330/sys/src/9/alphapc/devvga.c:219,2412000/0401/sys/src/9/alphapc/devvga.c:220,295
1999/0415    
		if(*p) 
			p++; 
 
		switch(strtoul(p, &p, 0)){ 
		case 8: 
			z = 3; 
			break; 
2000/0401    
		z = strtoul(p, &p, 0); 
1999/0415    
 
		default: 
			z = 0; 
			error(Ebadarg); 
		} 
2000/0401    
		chanstr = field[2]; 
		if((chan = strtochan(chanstr)) == 0) 
			error("bad channel"); 
1999/0415    
 
2000/0401    
		if(chantodepth(chan) != z) 
			error("depth, channel do not match"); 
 
1999/0415    
		cursoroff(1); 
		if(screensize(x, y, z)) 
2000/0401    
		deletescreenimage(); 
		if(screensize(x, y, z, chan)) 
1999/0415    
			error(Egreg); 
		vgascreenwin(scr); 
		cursoron(1); 
		return; 
	} 
2000/0401    
	else if(strcmp(field[0], "actualsize") == 0){ 
		if(scr->gscreen == nil) 
			error("set the screen size first"); 
 
		if(n < 2) 
			error(Ebadarg); 
		x = strtoul(field[1], &p, 0); 
		if(x == 0 || x > 2048) 
			error(Ebadarg); 
		if(*p) 
			p++; 
 
		y = strtoul(p, nil, 0); 
		if(y == 0 || y > 2048) 
			error(Ebadarg); 
 
		if(x > scr->gscreen->r.max.x || y > scr->gscreen->r.max.y) 
			error("physical screen bigger than virtual"); 
 
		r = Rect(0,0,x,y); 
		if(!eqrect(r, scr->gscreen->r)){ 
			if(scr->cur == nil || scr->cur->doespanning == 0) 
				error("virtual screen not supported"); 
		} 
 
		physgscreenr = r; 
		return; 
	} 
	else if(strcmp(field[0], "palettedepth") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
 
		x = strtoul(field[1], &p, 0); 
		if(x != 8 && x != 6) 
			error(Ebadarg); 
 
		scr->palettedepth = x; 
		return; 
	} 
	else if(strcmp(field[0], "drawinit") == 0){ 
		/* 
		 * This is a separate message, but first we need to make 
		 * aux/vga send it; once everyone has the new vga, we 
		 * can take the drawinit stuff out of hwgc. 
		 */ 
 
		/* 
		if(scr && scr->dev && scr->dev->drawinit) 
			scr->dev->drawinit(scr); 
		*/ 
 
		return; 
	} 
1999/0415    
	else if(strcmp(field[0], "linear") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
2000/0330/sys/src/9/alphapc/devvga.c:249,2542000/0401/sys/src/9/alphapc/devvga.c:303,330
1999/0415    
			error("not enough free address space"); 
		return; 
	} 
2000/0401    
/*	else if(strcmp(field[0], "memset") == 0){ 
		if(n < 4) 
			error(Ebadarg); 
		memset((void*)strtoul(field[1], 0, 0), atoi(field[2]), atoi(field[3])); 
		return; 
	} 
*/ 
	else if(strcmp(field[0], "blank") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
		drawblankscreen(atoi(field[1])); 
		return; 
	} 
	else if(strcmp(field[0], "hwaccel") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
		if(strcmp(field[1], "on") == 0) 
			hwaccel = 1; 
		else if(strcmp(field[1], "off") == 0) 
			hwaccel = 0; 
		return; 
	} 
1999/0415    
 
	error(Ebadarg); 
} 
2000/0330/sys/src/9/alphapc/devvga.c:256,2652000/0401/sys/src/9/alphapc/devvga.c:332,338
1999/0415    
static long 
vgawrite(Chan* c, void* a, long n, vlong off) 
{ 
	int port; 
	char *p; 
	ushort *sp; 
	ulong *lp; 
	ulong offset = off; 
 
	switch(c->qid.path & ~CHDIR){ 
2000/0330/sys/src/9/alphapc/devvga.c:281,3102000/0401/sys/src/9/alphapc/devvga.c:354,359
1999/0415    
		poperror(); 
		free(p); 
		return n; 
                 
	case Qvgaiob: 
		p = a; 
		for(port = offset; port < offset+n; port++) 
			outb(port, *p++); 
		return n; 
                 
	case Qvgaiow: 
		if((n & 01) || (offset & 01)) 
			error(Ebadarg); 
		n /= 2; 
		sp = a; 
		for(port = offset; port < offset+n; port += 2) 
			outs(port, *sp++); 
		return n*2; 
                 
	case Qvgaiol: 
		if((n & 0x03) || (offset & 0x03)) 
			error(Ebadarg); 
		n /= 4; 
		lp = a; 
		for(port = offset; port < offset+n; port += 4) 
			outl(port, *lp++); 
		return n*4; 
 
	default: 
		error(Egreg); 
2000/0401/sys/src/9/alphapc/devvga.c:1,42000/0407/sys/src/9/alphapc/devvga.c:1,5 (short | long)
1999/0415    
/* 
2000/0407    
 * VGA controller 
1999/0415    
 */ 
#include "u.h" 
#include "../port/lib.h" 
2000/0401/sys/src/9/alphapc/devvga.c:69,742000/0407/sys/src/9/alphapc/devvga.c:70,89
1999/0415    
{ 
} 
 
2000/0407    
static void 
checkport(int start, int end) 
{ 
	/* standard vga regs are OK */ 
	if(start >= 0x2b0 && end <= 0x2df+1) 
		return; 
	if(start >= 0x3c0 && end <= 0x3da+1) 
		return; 
 
	if(iounused(start, end)) 
		return; 
	error(Eperm); 
} 
 
1999/0415    
static long 
vgaread(Chan* c, void* a, long n, vlong off) 
{ 
2000/0401/sys/src/9/alphapc/devvga.c:76,812000/0407/sys/src/9/alphapc/devvga.c:91,97
1999/0415    
	char *p, *s; 
	VGAscr *scr; 
	ulong offset = off; 
2000/0407    
	char chbuf[30]; 
1999/0415    
 
	switch(c->qid.path & ~CHDIR){ 
 
2000/0401/sys/src/9/alphapc/devvga.c:90,1162000/0407/sys/src/9/alphapc/devvga.c:106,137
1999/0415    
			free(p); 
			nexterror(); 
		} 
2000/0407    
 
		len = 0; 
 
1999/0415    
		if(scr->dev) 
			s = scr->dev->name; 
		else 
			s = "cga"; 
2000/0401    
		len = snprint(p, READSTR, "type: %s\n", s); 
1999/0415    
		if(scr->gscreen) 
2000/0401    
			len += snprint(p+len, READSTR-len, "size: %dx%dx%d\n", 
2000/0407    
		len += snprint(p+len, READSTR-len, "type %s\n", s); 
 
		if(scr->gscreen) { 
			len += snprint(p+len, READSTR-len, "size %dx%dx%d %s\n", 
1999/0415    
				scr->gscreen->r.max.x, scr->gscreen->r.max.y, 
2000/0401    
				scr->gscreen->depth); 
1999/0415    
		if(scr->cur) 
			s = scr->cur->name; 
		else 
			s = "off"; 
2000/0401    
		len += snprint(p+len, READSTR-len, "hwgc: %s\n", s); 
2000/0407    
				scr->gscreen->depth, chantostr(chbuf, scr->gscreen->chan)); 
 
			if(Dx(scr->gscreen->r) != Dx(physgscreenr)  
			|| Dy(scr->gscreen->r) != Dy(physgscreenr)) 
				len += snprint(p+len, READSTR-len, "actualsize %dx%d\n", 
					physgscreenr.max.x, physgscreenr.max.y); 
		} 
 
		len += snprint(p+len, READSTR-len, "hwaccel %s\n", hwaccel ? "on" : "off"); 
		len += snprint(p+len, READSTR-len, "hwblank %s\n", hwblank ? "on" : "off"); 
1999/0512    
		if(scr->pciaddr) 
2000/0401    
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
1999/0512    
				scr->pciaddr); 
2000/0407    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", scr->pciaddr); 
1999/0512    
		else 
2000/0401    
			snprint(p+len, READSTR-len, "addr: 0x%lux\n", 
1999/0512    
				scr->aperture); 
1999/0415    
                 
2000/0407    
			snprint(p+len, READSTR-len, "addr 0x%lux\n", scr->aperture); 
1999/0415    
		n = readstr(offset, a, n, p); 
		poperror(); 
		free(p); 
2000/0401/sys/src/9/alphapc/devvga.c:159,1682000/0407/sys/src/9/alphapc/devvga.c:180,185
1999/0415    
		if(n < 2) 
			error(Ebadarg); 
2000/0401    
 
		/* BUG: drawinit should become a different message rather than piggybacking */ 
		if(scr && scr->dev && scr->dev->drawinit) 
			scr->dev->drawinit(scr); 
                 
1999/0415    
		if(strcmp(field[1], "off") == 0){ 
			lock(&cursor); 
			if(scr->cur){ 
2000/0401/sys/src/9/alphapc/devvga.c:277,2932000/0407/sys/src/9/alphapc/devvga.c:294,301
2000/0401    
		return; 
	} 
	else if(strcmp(field[0], "drawinit") == 0){ 
		/* 
		 * This is a separate message, but first we need to make 
		 * aux/vga send it; once everyone has the new vga, we 
		 * can take the drawinit stuff out of hwgc. 
		 */ 
                 
		/* 
		if(scr && scr->dev && scr->dev->drawinit) 
			scr->dev->drawinit(scr); 
		*/ 
                 
		return; 
	} 
1999/0415    
	else if(strcmp(field[0], "linear") == 0){ 
2000/0401/sys/src/9/alphapc/devvga.c:311,3192000/0407/sys/src/9/alphapc/devvga.c:319,327
2000/0401    
	} 
*/ 
	else if(strcmp(field[0], "blank") == 0){ 
		if(n < 2) 
2000/0407    
		if(n < 1) 
2000/0401    
			error(Ebadarg); 
		drawblankscreen(atoi(field[1])); 
2000/0407    
		drawblankscreen(1); 
2000/0401    
		return; 
	} 
	else if(strcmp(field[0], "hwaccel") == 0){ 
2000/0401/sys/src/9/alphapc/devvga.c:323,3282000/0407/sys/src/9/alphapc/devvga.c:331,345
2000/0401    
			hwaccel = 1; 
		else if(strcmp(field[1], "off") == 0) 
			hwaccel = 0; 
2000/0407    
		return; 
	} 
	else if(strcmp(field[0], "hwblank") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
		if(strcmp(field[1], "on") == 0) 
			hwblank = 1; 
		else if(strcmp(field[1], "off") == 0) 
			hwblank = 0; 
2000/0401    
		return; 
	} 
1999/0415    
 
2000/0407/sys/src/9/alphapc/devvga.c:126,1312000/0522/sys/src/9/alphapc/devvga.c:126,132 (short | long)
2000/0407    
					physgscreenr.max.x, physgscreenr.max.y); 
		} 
 
2000/0522    
		len += snprint(p+len, READSTR-len, "blanktime %lud\n", blanktime); 
2000/0407    
		len += snprint(p+len, READSTR-len, "hwaccel %s\n", hwaccel ? "on" : "off"); 
		len += snprint(p+len, READSTR-len, "hwblank %s\n", hwblank ? "on" : "off"); 
1999/0512    
		if(scr->pciaddr) 
2000/0407/sys/src/9/alphapc/devvga.c:323,3282000/0522/sys/src/9/alphapc/devvga.c:324,334
2000/0401    
			error(Ebadarg); 
2000/0407    
		drawblankscreen(1); 
2000/0401    
		return; 
2000/0522    
	} 
	else if(strcmp(field[0], "blanktime") == 0){ 
		if(n < 2) 
			error(Ebadarg); 
		blanktime = strtoul(field[1], 0, 0); 
2000/0401    
	} 
	else if(strcmp(field[0], "hwaccel") == 0){ 
		if(n < 2) 
2000/0522/sys/src/9/alphapc/devvga.c:329,3342000/0530/sys/src/9/alphapc/devvga.c:329,335 (short | long)
2000/0522    
		if(n < 2) 
			error(Ebadarg); 
		blanktime = strtoul(field[1], 0, 0); 
2000/0530    
		return; 
2000/0401    
	} 
	else if(strcmp(field[0], "hwaccel") == 0){ 
		if(n < 2) 
2000/0530/sys/src/9/alphapc/devvga.c:24,292001/0727/sys/src/9/alphapc/devvga.c:24,30 (short | long)
1999/0415    
}; 
 
static Dirtab vgadir[] = { 
2001/0727    
	".",	{ Qdir, 0, QTDIR },		0,	0550, 
1999/0415    
	"vgactl",	{ Qvgactl, 0 },		0,	0660, 
2000/0401    
	"vgabios",	{ Qvgabios, 0 },		0x10000,	0440, 
1999/0415    
}; 
2000/0530/sys/src/9/alphapc/devvga.c:47,622001/0727/sys/src/9/alphapc/devvga.c:48,63
1999/0415    
	return devattach('v', spec); 
} 
 
int 
vgawalk(Chan* c, char* name) 
2001/0727    
Walkqid* 
vgawalk(Chan* c, Chan *nc, char** name, int nname) 
1999/0415    
{ 
	return devwalk(c, name, vgadir, nelem(vgadir), devgen); 
2001/0727    
	return devwalk(c, nc, name, nname, vgadir, nelem(vgadir), devgen); 
1999/0415    
} 
 
static void 
vgastat(Chan* c, char* dp) 
2001/0727    
static int 
vgastat(Chan* c, uchar* dp, int n) 
1999/0415    
{ 
	devstat(c, dp, vgadir, nelem(vgadir), devgen); 
2001/0727    
	return devstat(c, dp, n, vgadir, nelem(vgadir), devgen); 
1999/0415    
} 
 
static Chan* 
2000/0530/sys/src/9/alphapc/devvga.c:93,992001/0727/sys/src/9/alphapc/devvga.c:94,100
1999/0415    
	ulong offset = off; 
2000/0407    
	char chbuf[30]; 
1999/0415    
 
	switch(c->qid.path & ~CHDIR){ 
2001/0727    
	switch((ulong)c->qid.path){ 
1999/0415    
 
	case Qdir: 
		return devdirread(c, a, n, vgadir, nelem(vgadir), devgen); 
2000/0530/sys/src/9/alphapc/devvga.c:359,3652001/0727/sys/src/9/alphapc/devvga.c:360,366
1999/0415    
	char *p; 
	ulong offset = off; 
 
	switch(c->qid.path & ~CHDIR){ 
2001/0727    
	switch((ulong)c->qid.path){ 
1999/0415    
 
	case Qdir: 
		error(Eperm); 
2000/0530/sys/src/9/alphapc/devvga.c:394,4002001/0727/sys/src/9/alphapc/devvga.c:395,400
1999/0415    
	vgareset, 
	devinit, 
	vgaattach, 
	devclone, 
	vgawalk, 
	vgastat, 
	vgaopen, 
2001/0727/sys/src/9/alphapc/devvga.c:173,1792001/1117/sys/src/9/alphapc/devvga.c:173,179 (short | long)
1999/0415    
	extern VGAcur *vgacur[]; 
2000/0401    
	Rectangle r; 
1999/0415    
 
2000/0401    
	n = getfields(a, field, nelem(field), 1, " "); 
2001/1117    
	n = tokenize(a, field, nelem(field)); 
2000/0401    
	if(n < 1) 
1999/0415    
		error(Ebadarg); 
 
2001/1117/sys/src/9/alphapc/devvga.c:393,3992002/0109/sys/src/9/alphapc/devvga.c:393,400 (short | long)
1999/0415    
	"vga", 
 
	vgareset, 
	devinit, 
2002/0109    
	devinit,	 
	devshutdown, 
1999/0415    
	vgaattach, 
	vgawalk, 
	vgastat, 


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