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

1997/0327/pc/devlpt.c (diff list | history)

1995/0726/sys/src/9/pc/devlpt.c:51,571997/0327/sys/src/9/pc/devlpt.c:51,56 (short | long | prev | next)
Clean up driver. No bug fixes.
Remove NLPT in favor of nelem.
Remove trivial functions in favor of dev*.
Use new intrenable.
rsc Fri Mar 4 12:44:25 2005
1991/1204    
	"pcr",		{Qpcr},		0,		0222, 
	"data",		{Qdata},	0,		0222, 
}; 
#define NLPT	(sizeof lptdir/sizeof lptdir[0]) 
 
static int 
lptgen(Chan *c, Dirtab *tab, int ntab, int i, Dir *dp) 
1995/0726/sys/src/9/pc/devlpt.c:71,861997/0327/sys/src/9/pc/devlpt.c:70,76
1991/1204    
	return 1; 
} 
 
void 
lptreset(void) 
{ 
} 
                 
void 
lptinit(void) 
{} 
                 
Chan* 
1997/0327    
static Chan* 
1991/1204    
lptattach(char *spec) 
{ 
	Chan *c; 
1995/0726/sys/src/9/pc/devlpt.c:90,961997/0327/sys/src/9/pc/devlpt.c:80,86
1993/0224    
	if(!set){ 
1994/0513    
		outb(lptbase[i-1]+Qpcr, 0);	/* turn off interrupts */ 
1993/0224    
		set = 1; 
1994/0324    
		setvec(Parallelvec, lptintr, 0); 
1997/0327    
		intrenable(VectorLPT, lptintr, 0, BUSUNKNOWN); 
1993/0224    
	} 
1991/1204    
	if(i < 1 || i > NDEV) 
1992/0114    
		error(Ebadarg); 
1995/0726/sys/src/9/pc/devlpt.c:99,1611997/0327/sys/src/9/pc/devlpt.c:89,125
1991/1204    
	return c; 
} 
 
Chan* 
lptclone(Chan *c, Chan *nc) 
{ 
	return devclone(c, nc); 
} 
                 
int 
1997/0327    
static int 
1991/1204    
lptwalk(Chan *c, char *name) 
{ 
	return devwalk(c, name, lptdir, NLPT, lptgen); 
1997/0327    
	return devwalk(c, name, lptdir, nelem(lptdir), lptgen); 
1991/1204    
} 
 
void 
1997/0327    
static void 
1991/1204    
lptstat(Chan *c, char *dp) 
{ 
	devstat(c, dp, lptdir, NLPT, lptgen); 
1997/0327    
	devstat(c, dp, lptdir, nelem(lptdir), lptgen); 
1991/1204    
} 
 
Chan* 
1997/0327    
static Chan* 
1991/1204    
lptopen(Chan *c, int omode) 
{ 
	return devopen(c, omode, lptdir, NLPT, lptgen); 
1997/0327    
	return devopen(c, omode, lptdir, nelem(lptdir), lptgen); 
1991/1204    
} 
 
void 
1995/0726    
lptcreate(Chan*, char*, int, ulong) 
1991/1204    
{ 
	error(Eperm); 
} 
                 
void 
1997/0327    
static void 
1991/1204    
lptclose(Chan *c) 
1992/0711    
{ 
	USED(c); 
} 
1991/1204    
 
void 
lptremove(Chan *c) 
1997/0327    
static long 
lptread(Chan *c, void *a, long n, ulong) 
1991/1204    
{ 
1992/0711    
	USED(c); 
1991/1204    
	error(Eperm); 
} 
                 
void 
lptwstat(Chan *c, char *dp) 
{ 
1992/0711    
	USED(c, dp); 
1991/1204    
	error(Eperm); 
} 
                 
long 
lptread(Chan *c, void *a, long n) 
{ 
	char str[16]; int size; 
 
	if(c->qid.path == CHDIR) 
		return devdirread(c, a, n, lptdir, NLPT, lptgen); 
1997/0327    
		return devdirread(c, a, n, lptdir, nelem(lptdir), lptgen); 
1991/1204    
	size = sprint(str, "0x%2.2ux\n", inb(c->qid.path)); 
	if(c->offset >= size) 
		return 0; 
1995/0726/sys/src/9/pc/devlpt.c:165,1791997/0327/sys/src/9/pc/devlpt.c:129,137
1991/1204    
	return n; 
} 
 
1995/0108    
Block* 
lptbread(Chan *c, long n, ulong offset) 
1997/0327    
static long 
lptwrite(Chan *c, void *a, long n, ulong) 
1995/0108    
{ 
	return devbread(c, n, offset); 
} 
                 
1991/1204    
long 
lptwrite(Chan *c, void *a, long n) 
{ 
	char str[16], *p; 
	long base, k; 
 
1995/0726/sys/src/9/pc/devlpt.c:200,2111997/0327/sys/src/9/pc/devlpt.c:158,163
1991/1204    
	return n; 
1995/0108    
} 
 
long 
lptbwrite(Chan *c, Block *bp, ulong offset) 
{ 
	return devbwrite(c, bp, offset); 
1991/1204    
} 
                 
static void 
outch(int base, int c) 
{ 
1995/0726/sys/src/9/pc/devlpt.c:239,2411997/0327/sys/src/9/pc/devlpt.c:191,211
1994/0324    
	USED(ur, arg); 
1991/1204    
	wakeup(&lptrendez); 
} 
1997/0327    
 
Dev lptdevtab = { 
	devreset, 
	devinit, 
	lptattach, 
	devclone, 
	lptwalk, 
	lptstat, 
	lptopen, 
	devcreate, 
	lptclose, 
	lptread, 
	devbread, 
	lptwrite, 
	devbwrite, 
	devremove, 
	devwstat, 
}; 


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