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

2001/0527/pc/devvga.c (diff list | history)

2001/0503/sys/src/9/pc/devvga.c:17,302001/0527/sys/src/9/pc/devvga.c:17,27 (short | long | prev | next)
1997/1101    
enum { 
	Qdir, 
	Qvgactl, 
2001/0426    
	Qvgaovl, 
	Qvgaovlctl, 
1994/0624    
}; 
 
1997/1101    
static Dirtab vgadir[] = { 
2001/0426    
	"vgactl",		{ Qvgactl, 0 },		0,	0660, 
	"vgaovl",		{ Qvgaovl, 0 },		0,	0660, 
	"vgaovlctl",	{ Qvgaovlctl, 0 },	0, 	0660, 
2001/0527    
	".",	{ Qdir, 0, QTDIR },		0,	0550, 
	"vgactl",	{ Qvgactl, 0 },		0,	0660, 
1992/1119    
}; 
1992/0527    
 
1997/0327    
static void 
2001/0503/sys/src/9/pc/devvga.c:46,942001/0527/sys/src/9/pc/devvga.c:43,69
1997/0327    
	return devattach('v', spec); 
1992/0527    
} 
 
int 
1997/1101    
vgawalk(Chan* c, char* name) 
2001/0527    
Walkqid* 
vgawalk(Chan* c, Chan *nc, char** name, int nname) 
1992/0527    
{ 
1997/0327    
	return devwalk(c, name, vgadir, nelem(vgadir), devgen); 
2001/0527    
	return devwalk(c, nc, name, nname, vgadir, nelem(vgadir), devgen); 
1992/0527    
} 
 
1997/0327    
static void 
1997/1101    
vgastat(Chan* c, char* dp) 
2001/0527    
static int 
vgastat(Chan* c, uchar* dp, int n) 
1992/0527    
{ 
1997/0327    
	devstat(c, dp, vgadir, nelem(vgadir), devgen); 
2001/0527    
	return devstat(c, dp, n, vgadir, nelem(vgadir), devgen); 
1992/0527    
} 
 
1997/0327    
static Chan* 
1997/1101    
vgaopen(Chan* c, int omode) 
1992/0527    
{ 
2001/0501    
	VGAscr *scr; 
	static char *openctl = "openctl\n"; 
                 
	scr = &vgascreen[0]; 
	if ((c->qid.path & ~CHDIR) == Qvgaovlctl) { 
		if (scr->dev->ovlctl) 
			scr->dev->ovlctl(scr, c, openctl, strlen(openctl)); 
		else  
			error(Enonexist); 
	} 
1997/0327    
	return devopen(c, omode, vgadir, nelem(vgadir), devgen); 
1992/0527    
} 
 
1997/0327    
static void 
2001/0501    
vgaclose(Chan* c) 
2001/0427    
{		 
	VGAscr *scr; 
2001/0501    
	static char *closectl = "closectl\n"; 
2001/0427    
                 
	scr = &vgascreen[0]; 
2001/0501    
	if ((c->qid.path & ~CHDIR) == Qvgaovlctl) { 
2001/0503    
		if (scr->dev->ovlctl){ 
			if(waserror()) 
				return; 
2001/0501    
			scr->dev->ovlctl(scr, c, closectl, strlen(closectl)); 
2001/0503    
			poperror(); 
		} 
2001/0427    
	} 
2001/0527    
vgaclose(Chan*) 
{ 
1992/0527    
} 
 
1999/0714    
static void 
2001/0503/sys/src/9/pc/devvga.c:114,1202001/0527/sys/src/9/pc/devvga.c:89,95
1998/0319    
	ulong offset = off; 
2000/0330    
	char chbuf[30]; 
1992/0528    
 
1997/1101    
	switch(c->qid.path & ~CHDIR){ 
2001/0527    
	switch((ulong)c->qid.path){ 
1997/1101    
 
1992/0527    
	case Qdir: 
1997/1101    
		return devdirread(c, a, n, vgadir, nelem(vgadir), devgen); 
2001/0503/sys/src/9/pc/devvga.c:157,1672001/0527/sys/src/9/pc/devvga.c:132,137
1997/1101    
 
		return n; 
 
2001/0426    
	case Qvgaovl: 
	case Qvgaovlctl: 
		error(Ebadusefd); 
		break; 
                 
1997/1101    
	default: 
		error(Egreg); 
		break; 
2001/0503/sys/src/9/pc/devvga.c:368,3832001/0527/sys/src/9/pc/devvga.c:338,350
1994/0624    
	error(Ebadarg); 
} 
 
2001/0426    
char Enooverlay[] = "No overlay support"; 
                 
1997/0327    
static long 
1998/0319    
vgawrite(Chan* c, void* a, long n, vlong off) 
1992/0527    
{ 
1997/1101    
	char *p; 
1998/0319    
	ulong offset = off; 
2001/0426    
	VGAscr *scr; 
1992/0528    
 
1997/1101    
	switch(c->qid.path & ~CHDIR){ 
2001/0527    
	switch((ulong)c->qid.path){ 
1997/1101    
 
1992/0527    
	case Qdir: 
		error(Eperm); 
2001/0503/sys/src/9/pc/devvga.c:397,4192001/0527/sys/src/9/pc/devvga.c:364,369
1997/1101    
		free(p); 
1992/0603    
		return n; 
2001/0426    
 
	case Qvgaovl: 
		scr = &vgascreen[0]; 
2001/0428    
		if (scr->dev->ovlwrite == nil) { 
			error(Enooverlay); 
			break; 
		} 
		return scr->dev->ovlwrite(scr, a, n, off); 
2001/0426    
                 
	case Qvgaovlctl: 
		scr = &vgascreen[0]; 
		if (scr->dev->ovlctl == nil) { 
			error(Enooverlay); 
			break; 
		} 
2001/0501    
		scr->dev->ovlctl(scr, c, a, n); 
		return n; 
1997/1101    
                 
	default: 
		error(Egreg); 
		break; 
2001/0503/sys/src/9/pc/devvga.c:429,4352001/0527/sys/src/9/pc/devvga.c:379,384
1997/0327    
	vgareset, 
1997/1101    
	devinit, 
1997/0327    
	vgaattach, 
	devclone, 
	vgawalk, 
	vgastat, 
	vgaopen, 


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