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

1990/1127/port/devboot.c (diff list | history)

1990/0424/sys/src/9/port/devboot.c:104,1091990/0427/sys/src/9/port/devboot.c:104,110 (short | long)
1990/0424    
	case Qboot: 
		pc = *(ulong*)buf; 
		splhi(); 
1990/0427    
		flushmmu(); 
1990/0424    
		gotopc(pc); 
	} 
	error(0, Ebadarg); 
1990/0427/sys/src/9/port/devboot.c:104,1101990/0430/sys/src/9/port/devboot.c:104,109 (short | long)
1990/0424    
	case Qboot: 
		pc = *(ulong*)buf; 
		splhi(); 
1990/0427    
		flushmmu(); 
1990/0424    
		gotopc(pc); 
	} 
	error(0, Ebadarg); 
1990/0430/sys/src/9/port/devboot.c:62,681990/11211/sys/src/9/port/devboot.c:62,68 (short | long)
1990/0424    
void	  
bootcreate(Chan *c, char *name, int omode, ulong perm) 
{ 
	error(0, Eperm); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
/* 
1990/0430/sys/src/9/port/devboot.c:81,871990/11211/sys/src/9/port/devboot.c:81,87
1990/0424    
		return devdirread(c, buf, n, bootdir, NBOOT, devgen); 
	} 
 
	error(0, Egreg); 
1990/11211    
	error(Egreg); 
1990/0424    
} 
 
long	  
1990/0430/sys/src/9/port/devboot.c:99,1051990/11211/sys/src/9/port/devboot.c:99,105
1990/0424    
			memcpy((char*)c->offset, buf, n); 
			return n; 
		} 
		error(0, Ebadarg); 
1990/11211    
		error(Ebadarg); 
1990/0424    
 
	case Qboot: 
		pc = *(ulong*)buf; 
1990/0430/sys/src/9/port/devboot.c:106,1341990/11211/sys/src/9/port/devboot.c:106,122
1990/0424    
		splhi(); 
		gotopc(pc); 
	} 
	error(0, Ebadarg); 
1990/11211    
	error(Ebadarg); 
1990/0424    
} 
 
void	  
bootremove(Chan *c) 
{ 
	error(0, Eperm); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
void	  
bootwstat(Chan *c, char *dp) 
{ 
	error(0, Eperm); 
} 
                 
void 
bootuserstr(Error *e, char *buf) 
{ 
	consuserstr(e, buf); 
} 
                 
void	  
booterrstr(Error *e, char *buf) 
{ 
	rooterrstr(e, buf); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
1990/11211/sys/src/9/port/devboot.c:13,201990/1127/sys/src/9/port/devboot.c:13,20 (short | long)
1990/0424    
}; 
 
Dirtab bootdir[]={ 
	"boot",		Qboot,		0,			0666, 
	"mem",		Qmem,		0,			0666, 
1990/1127    
	"boot",		{Qboot},	0,	0666, 
	"mem",		{Qmem},		0,	0666, 
1990/0424    
}; 
 
#define	NBOOT	(sizeof bootdir/sizeof(Dirtab)) 
1990/11211/sys/src/9/port/devboot.c:76,821990/1127/sys/src/9/port/devboot.c:76,82
1990/0424    
long	  
bootread(Chan *c, void *buf, long n) 
{ 
	switch(c->qid & ~CHDIR){ 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qdir: 
		return devdirread(c, buf, n, bootdir, NBOOT, devgen); 
	} 
1990/11211/sys/src/9/port/devboot.c:89,951990/1127/sys/src/9/port/devboot.c:89,95
1990/0424    
{ 
	ulong pc; 
 
	switch(c->qid & ~CHDIR){ 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qmem: 
		/* kernel memory.  BUG: shouldn't be so easygoing. BUG: mem mapping? */ 
		if(c->offset>=KZERO && c->offset<KZERO+conf.npage*BY2PG){ 
1990/11211/sys/src/9/port/devboot.c:99,1041990/1127/sys/src/9/port/devboot.c:99,105
1990/0424    
			memcpy((char*)c->offset, buf, n); 
			return n; 
		} 
1990/1127    
		print("bootwrite: bad addr %lux\n", c->offset); 
1990/11211    
		error(Ebadarg); 
1990/0424    
 
	case Qboot: 
1990/11211/sys/src/9/port/devboot.c:106,1111990/1127/sys/src/9/port/devboot.c:107,113
1990/0424    
		splhi(); 
		gotopc(pc); 
	} 
1990/1127    
	print("bootwrite: bad path %d\n", c->qid.path); 
1990/11211    
	error(Ebadarg); 
1990/0424    
} 
 
1990/1127/sys/src/9/port/devboot.c:96,1021991/0318/sys/src/9/port/devboot.c:96,102 (short | long)
1990/0424    
/*			print("%ux, %d\n", c->offset, n);/**/ 
			if(c->offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - c->offset; 
			memcpy((char*)c->offset, buf, n); 
1991/0318    
			memmove((char*)c->offset, buf, n); 
1990/0424    
			return n; 
		} 
1990/1127    
		print("bootwrite: bad addr %lux\n", c->offset); 
1991/0318/sys/src/9/port/devboot.c:74,801991/0411/sys/src/9/port/devboot.c:74,80 (short | long)
1990/0424    
} 
 
long	  
bootread(Chan *c, void *buf, long n) 
1991/0411    
bootread(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qdir: 
1991/0318/sys/src/9/port/devboot.c:85,911991/0411/sys/src/9/port/devboot.c:85,91
1990/0424    
} 
 
long	  
bootwrite(Chan *c, void *buf, long n) 
1991/0411    
bootwrite(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
	ulong pc; 
 
1991/0318/sys/src/9/port/devboot.c:92,1051991/0411/sys/src/9/port/devboot.c:92,105
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qmem: 
		/* kernel memory.  BUG: shouldn't be so easygoing. BUG: mem mapping? */ 
		if(c->offset>=KZERO && c->offset<KZERO+conf.npage*BY2PG){ 
1991/0411    
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
1990/0424    
/*			print("%ux, %d\n", c->offset, n);/**/ 
			if(c->offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - c->offset; 
1991/0318    
			memmove((char*)c->offset, buf, n); 
1991/0411    
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove((char*)offset, buf, n); 
1990/0424    
			return n; 
		} 
1990/1127    
		print("bootwrite: bad addr %lux\n", c->offset); 
1991/0411    
		print("bootwrite: bad addr %lux\n", offset); 
1990/11211    
		error(Ebadarg); 
1990/0424    
 
	case Qboot: 
1991/0411/sys/src/9/port/devboot.c:47,521991/0419/sys/src/9/port/devboot.c:47,58 (short | long)
1990/0424    
	return devwalk(c, name, bootdir, NBOOT, devgen); 
} 
 
1991/0419    
Chan* 
bootclwalk(Chan *c, char *name) 
{ 
	return devclwalk(c, name); 
} 
 
1990/0424    
void	  
bootstat(Chan *c, char *dp) 
{ 
1991/0419/sys/src/9/port/devboot.c:47,581991/0427/sys/src/9/port/devboot.c:47,52 (short | long)
1990/0424    
	return devwalk(c, name, bootdir, NBOOT, devgen); 
} 
 
1991/0419    
Chan* 
bootclwalk(Chan *c, char *name) 
{ 
	return devclwalk(c, name); 
} 
                 
1990/0424    
void	  
bootstat(Chan *c, char *dp) 
{ 
1991/0427/sys/src/9/port/devboot.c:65,731991/1206/sys/src/9/port/devboot.c:65,70 (short | long)
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
/* 
 * sysremove() knows this is a nop 
 */ 
void	  
bootclose(Chan *c) 
{ 
1991/0427/sys/src/9/port/devboot.c:91,991991/1206/sys/src/9/port/devboot.c:88,96
1990/0424    
 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qmem: 
		/* kernel memory.  BUG: shouldn't be so easygoing. BUG: mem mapping? */ 
1991/1206    
		/* kernel memory */ 
1991/0411    
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
1990/0424    
/*			print("%ux, %d\n", c->offset, n);/**/ 
1991/1206    
/* print("%ux, %d\n", c->offset, n);/**/ 
1991/0411    
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove((char*)offset, buf, n); 
1991/1206/sys/src/9/port/devboot.c:3,91992/0111/sys/src/9/port/devboot.c:3,9 (short | long)
Move error.h to ../port. Change errors to actual strings.
rsc Fri Mar 4 12:44:25 2005
1990/0424    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
#include	"errno.h" 
1992/0111    
#include	"../port/error.h" 
1990/0424    
#include	"devtab.h" 
 
enum{ 
1992/0111/sys/src/9/port/devboot.c:62,671992/0320/sys/src/9/port/devboot.c:62,68 (short | long)
1990/0424    
void	  
bootcreate(Chan *c, char *name, int omode, ulong perm) 
{ 
1992/0320    
	USED(c); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
1992/0111/sys/src/9/port/devboot.c:68,731992/0320/sys/src/9/port/devboot.c:69,75
1990/0424    
void	  
bootclose(Chan *c) 
{ 
1992/0320    
	USED(c); 
1990/0424    
} 
 
long	  
1992/0111/sys/src/9/port/devboot.c:111,1161992/0320/sys/src/9/port/devboot.c:113,119
1990/0424    
void	  
bootremove(Chan *c) 
{ 
1992/0320    
	USED(c); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
1992/0111/sys/src/9/port/devboot.c:117,1211992/0320/sys/src/9/port/devboot.c:120,125
1990/0424    
void	  
bootwstat(Chan *c, char *dp) 
{ 
1992/0320    
	USED(c); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
1992/0320/sys/src/9/port/devboot.c:1,51992/0321/sys/src/9/port/devboot.c:1,5 (short | long)
Move lib.h to ../port.
rsc Fri Mar 4 12:44:25 2005
1990/0424    
#include	"u.h" 
#include	"lib.h" 
1992/0321    
#include	"../port/lib.h" 
1990/0424    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
1992/0321/sys/src/9/port/devboot.c:32,381992/0522/sys/src/9/port/devboot.c:32,38 (short | long)
1990/0424    
Chan* 
bootattach(char *spec) 
{ 
	return devattach('b', spec); 
1992/0522    
	return devattach('B', spec); 
1990/0424    
} 
 
Chan* 
1992/0321/sys/src/9/port/devboot.c:81,861992/0522/sys/src/9/port/devboot.c:81,87
1990/0424    
	} 
 
1990/11211    
	error(Egreg); 
1992/0522    
	return 0;	/* not reached */ 
1990/0424    
} 
 
long	  
1992/0321/sys/src/9/port/devboot.c:108,1131992/0522/sys/src/9/port/devboot.c:109,115
1990/0424    
	} 
1990/1127    
	print("bootwrite: bad path %d\n", c->qid.path); 
1990/11211    
	error(Ebadarg); 
1992/0522    
	return 0;	/* not reached */ 
1990/0424    
} 
 
void	  
1992/0522/sys/src/9/port/devboot.c:76,831992/0625/sys/src/9/port/devboot.c:76,94 (short | long)
1991/0411    
bootread(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1992/0625    
 
1990/0424    
	case Qdir: 
		return devdirread(c, buf, n, bootdir, NBOOT, devgen); 
1992/0625    
 
	case Qmem: 
		/* kernel memory */ 
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove(buf, (char*)offset, n); 
			return n; 
		} 
		error(Ebadarg); 
1990/0424    
	} 
 
1990/11211    
	error(Egreg); 
1992/0522/sys/src/9/port/devboot.c:93,1051992/0625/sys/src/9/port/devboot.c:104,114
1990/0424    
	case Qmem: 
1991/1206    
		/* kernel memory */ 
1991/0411    
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
1991/1206    
/* print("%ux, %d\n", c->offset, n);/**/ 
1991/0411    
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove((char*)offset, buf, n); 
1990/0424    
			return n; 
		} 
1991/0411    
		print("bootwrite: bad addr %lux\n", offset); 
1990/11211    
		error(Ebadarg); 
1990/0424    
 
	case Qboot: 
1992/0522/sys/src/9/port/devboot.c:107,1131992/0625/sys/src/9/port/devboot.c:116,121
1990/0424    
		splhi(); 
		gotopc(pc); 
	} 
1990/1127    
	print("bootwrite: bad path %d\n", c->qid.path); 
1990/11211    
	error(Ebadarg); 
1992/0522    
	return 0;	/* not reached */ 
1990/0424    
} 
1992/0625/sys/src/9/port/devboot.c:62,681992/0711/sys/src/9/port/devboot.c:62,68 (short | long)
1990/0424    
void	  
bootcreate(Chan *c, char *name, int omode, ulong perm) 
{ 
1992/0320    
	USED(c); 
1992/0711    
	USED(c, name, omode, perm); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
1992/0625/sys/src/9/port/devboot.c:130,1351992/0711/sys/src/9/port/devboot.c:130,135
1990/0424    
void	  
bootwstat(Chan *c, char *dp) 
{ 
1992/0320    
	USED(c); 
1992/0711    
	USED(c, dp); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
1992/0711/sys/src/9/port/devboot.c:114,1191993/0206/sys/src/9/port/devboot.c:114,120 (short | long)
1990/0424    
	case Qboot: 
		pc = *(ulong*)buf; 
		splhi(); 
1993/0206    
		icflush(0, 64*1024); 
1990/0424    
		gotopc(pc); 
	} 
1990/11211    
	error(Ebadarg); 
1993/0206/sys/src/9/port/devboot.c:114,1201993/0219/sys/src/9/port/devboot.c:114,119 (short | long)
1990/0424    
	case Qboot: 
		pc = *(ulong*)buf; 
		splhi(); 
1993/0206    
		icflush(0, 64*1024); 
1990/0424    
		gotopc(pc); 
	} 
1990/11211    
	error(Ebadarg); 
1993/0219/sys/src/9/port/devboot.c:95,1001995/0108/sys/src/9/port/devboot.c:95,106 (short | long)
1992/0522    
	return 0;	/* not reached */ 
1990/0424    
} 
 
1995/0108    
Block* 
bootbread(Chan *c, long n, ulong offset) 
{ 
	return devbread(c, n, offset); 
} 
 
1990/0424    
long	  
1991/0411    
bootwrite(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
1993/0219/sys/src/9/port/devboot.c:118,1231995/0108/sys/src/9/port/devboot.c:124,135
1990/0424    
	} 
1990/11211    
	error(Ebadarg); 
1992/0522    
	return 0;	/* not reached */ 
1995/0108    
} 
 
long 
bootbwrite(Chan *c, Block *bp, ulong offset) 
{ 
	return devbwrite(c, bp, offset); 
1990/0424    
} 
 
void	  
1995/0108/sys/src/9/port/devboot.c:60,751995/0804/sys/src/9/port/devboot.c:60,73 (short | long)
1990/0424    
} 
 
void	  
bootcreate(Chan *c, char *name, int omode, ulong perm) 
1995/0804    
bootcreate(Chan*, char*, int, ulong) 
1990/0424    
{ 
1992/0711    
	USED(c, name, omode, perm); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
void	  
bootclose(Chan *c) 
1995/0804    
bootclose(Chan*) 
1990/0424    
{ 
1992/0320    
	USED(c); 
1990/0424    
} 
 
long	  
1995/0108/sys/src/9/port/devboot.c:133,1471995/0804/sys/src/9/port/devboot.c:131,143
1990/0424    
} 
 
void	  
bootremove(Chan *c) 
1995/0804    
bootremove(Chan*) 
1990/0424    
{ 
1992/0320    
	USED(c); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
 
void	  
bootwstat(Chan *c, char *dp) 
1995/0804    
bootwstat(Chan*, char*) 
1990/0424    
{ 
1992/0711    
	USED(c, dp); 
1990/11211    
	error(Eperm); 
1990/0424    
} 
1995/0804/sys/src/9/port/devboot.c:4,101996/0223/sys/src/9/port/devboot.c:4,9 (short | long)
1990/0424    
#include	"dat.h" 
#include	"fns.h" 
1992/0111    
#include	"../port/error.h" 
1990/0424    
#include	"devtab.h" 
 
enum{ 
	Qdir, 
1996/0223/sys/src/9/port/devboot.c:1,1421997/0327/sys/src/9/port/devboot.c:0 (short | long)
Deleted.
rsc Mon Mar 7 10:30:30 2005
1990/0424    
#include	"u.h" 
1992/0321    
#include	"../port/lib.h" 
1990/0424    
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
1992/0111    
#include	"../port/error.h" 
1990/0424    
                 
enum{ 
	Qdir, 
	Qboot, 
	Qmem, 
}; 
                 
Dirtab bootdir[]={ 
1990/1127    
	"boot",		{Qboot},	0,	0666, 
	"mem",		{Qmem},		0,	0666, 
1990/0424    
}; 
                 
#define	NBOOT	(sizeof bootdir/sizeof(Dirtab)) 
                 
void 
bootreset(void) 
{ 
} 
                 
void 
bootinit(void) 
{ 
} 
                 
Chan* 
bootattach(char *spec) 
{ 
1992/0522    
	return devattach('B', spec); 
1990/0424    
} 
                 
Chan* 
bootclone(Chan *c, Chan *nc) 
{ 
	return devclone(c, nc); 
} 
                 
int	  
bootwalk(Chan *c, char *name) 
{ 
	return devwalk(c, name, bootdir, NBOOT, devgen); 
} 
                 
void	  
bootstat(Chan *c, char *dp) 
{ 
	devstat(c, dp, bootdir, NBOOT, devgen); 
} 
                 
Chan* 
bootopen(Chan *c, int omode) 
{ 
	return devopen(c, omode, bootdir, NBOOT, devgen); 
} 
                 
void	  
1995/0804    
bootcreate(Chan*, char*, int, ulong) 
1990/0424    
{ 
1990/11211    
	error(Eperm); 
1990/0424    
} 
                 
void	  
1995/0804    
bootclose(Chan*) 
1990/0424    
{ 
} 
                 
long	  
1991/0411    
bootread(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1992/0625    
                 
1990/0424    
	case Qdir: 
		return devdirread(c, buf, n, bootdir, NBOOT, devgen); 
1992/0625    
                 
	case Qmem: 
		/* kernel memory */ 
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove(buf, (char*)offset, n); 
			return n; 
		} 
		error(Ebadarg); 
1990/0424    
	} 
                 
1990/11211    
	error(Egreg); 
1992/0522    
	return 0;	/* not reached */ 
1990/0424    
} 
                 
1995/0108    
Block* 
bootbread(Chan *c, long n, ulong offset) 
{ 
	return devbread(c, n, offset); 
} 
                 
1990/0424    
long	  
1991/0411    
bootwrite(Chan *c, void *buf, long n, ulong offset) 
1990/0424    
{ 
	ulong pc; 
                 
1990/1127    
	switch(c->qid.path & ~CHDIR){ 
1990/0424    
	case Qmem: 
1991/1206    
		/* kernel memory */ 
1991/0411    
		if(offset>=KZERO && offset<KZERO+conf.npage*BY2PG){ 
			if(offset+n > KZERO+conf.npage*BY2PG) 
				n = KZERO+conf.npage*BY2PG - offset; 
			memmove((char*)offset, buf, n); 
1990/0424    
			return n; 
		} 
1990/11211    
		error(Ebadarg); 
1990/0424    
                 
	case Qboot: 
		pc = *(ulong*)buf; 
		splhi(); 
		gotopc(pc); 
	} 
1990/11211    
	error(Ebadarg); 
1992/0522    
	return 0;	/* not reached */ 
1995/0108    
} 
                 
long 
bootbwrite(Chan *c, Block *bp, ulong offset) 
{ 
	return devbwrite(c, bp, offset); 
1990/0424    
} 
                 
void	  
1995/0804    
bootremove(Chan*) 
1990/0424    
{ 
1990/11211    
	error(Eperm); 
1990/0424    
} 
                 
void	  
1995/0804    
bootwstat(Chan*, char*) 
1990/0424    
{ 
1990/11211    
	error(Eperm); 
1990/0424    
} 


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