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

1990/03091/gnot/devroot.c (diff list | history)

1990/03091/sys/src/9/gnot/devroot.c:16,261990/11211/sys/src/9/gnot/devroot.c:16,26 (short | long)
1990/03091    
}; 
 
Dirtab rootdir[]={ 
	"bin",		Qbin|CHDIR,	0,			0700, 
	"boot",		Qboot,		0,			0700, 
	"dev",		Qdev|CHDIR,	0,			0700, 
	"env",		Qenv|CHDIR,	0,			0700, 
	"proc",		Qproc|CHDIR,	0,			0700, 
1990/11211    
	"bin",		{Qbin|CHDIR},	0,			0700, 
	"boot",		{Qboot},	0,			0700, 
	"dev",		{Qdev|CHDIR},	0,			0700, 
	"env",		{Qenv|CHDIR},	0,			0700, 
	"proc",		{Qproc|CHDIR},	0,			0700, 
1990/03091    
}; 
 
#define	NROOT	(sizeof rootdir/sizeof(Dirtab)) 
1990/03091/sys/src/9/gnot/devroot.c:68,741990/11211/sys/src/9/gnot/devroot.c:68,74
1990/03091    
void	  
rootcreate(Chan *c, char *name, int omode, ulong perm) 
{ 
	error(0, Eperm); 
1990/11211    
	error(Eperm); 
1990/03091    
} 
 
/* 
1990/03091/sys/src/9/gnot/devroot.c:85,911990/11211/sys/src/9/gnot/devroot.c:85,91
1990/03091    
rootread(Chan *c, void *buf, long n) 
{ 
 
	switch(c->qid & ~CHDIR){ 
1990/11211    
	switch(c->qid.path & ~CHDIR){ 
1990/03091    
	case Qdir: 
		return devdirread(c, buf, n, rootdir, NROOT, devgen); 
 
1990/03091/sys/src/9/gnot/devroot.c:100,1061990/11211/sys/src/9/gnot/devroot.c:100,106
1990/03091    
	case Qdev: 
		return 0; 
	} 
	error(0, Egreg); 
1990/11211    
	error(Egreg); 
1990/03091    
	return 0; 
} 
 
1990/03091/sys/src/9/gnot/devroot.c:107,1401990/11211/sys/src/9/gnot/devroot.c:107,123
1990/03091    
long	  
rootwrite(Chan *c, void *buf, long n) 
{ 
	error(0, Egreg); 
1990/11211    
	error(Egreg); 
1990/03091    
} 
 
void	  
rootremove(Chan *c) 
{ 
	error(0, Eperm); 
1990/11211    
	error(Eperm); 
1990/03091    
} 
 
void	  
rootwstat(Chan *c, char *dp) 
{ 
	error(0, Eperm); 
} 
                 
void 
rootuserstr(Error *e, char *buf) 
{ 
	consuserstr(e, buf); 
} 
                 
#include "errstr.h" 
                 
void	  
rooterrstr(Error *e, char *buf) 
{ 
	if(e->code<0 || e->code>=sizeof errstrtab/sizeof(char*)) 
		strcpy(buf, "no such error"); 
	else 
		strcpy(buf, errstrtab[e->code]); 
1990/11211    
	error(Eperm); 
1990/03091    
} 
1990/11211/sys/src/9/gnot/devroot.c:1,1231990/1210/sys/src/9/gnot/devroot.c:0 (short | long)
Deleted.
rsc Mon Mar 7 10:21:43 2005
1990/03091    
#include	"u.h" 
#include	"lib.h" 
#include	"mem.h" 
#include	"dat.h" 
#include	"fns.h" 
#include	"errno.h" 
#include	"devtab.h" 
                 
enum{ 
	Qdir, 
	Qbin, 
	Qboot, 
	Qdev, 
	Qenv, 
	Qproc, 
}; 
                 
Dirtab rootdir[]={ 
1990/11211    
	"bin",		{Qbin|CHDIR},	0,			0700, 
	"boot",		{Qboot},	0,			0700, 
	"dev",		{Qdev|CHDIR},	0,			0700, 
	"env",		{Qenv|CHDIR},	0,			0700, 
	"proc",		{Qproc|CHDIR},	0,			0700, 
1990/03091    
}; 
                 
#define	NROOT	(sizeof rootdir/sizeof(Dirtab)) 
                 
void 
rootreset(void) 
{ 
} 
                 
void 
rootinit(void) 
{ 
} 
                 
Chan* 
rootattach(char *spec) 
{ 
	return devattach('/', spec); 
} 
                 
Chan* 
rootclone(Chan *c, Chan *nc) 
{ 
	return devclone(c, nc); 
} 
                 
int	  
rootwalk(Chan *c, char *name) 
{ 
	return devwalk(c, name, rootdir, NROOT, devgen); 
} 
                 
void	  
rootstat(Chan *c, char *dp) 
{ 
	devstat(c, dp, rootdir, NROOT, devgen); 
} 
                 
Chan* 
rootopen(Chan *c, int omode) 
{ 
	return devopen(c, omode, rootdir, NROOT, devgen); 
} 
                 
void	  
rootcreate(Chan *c, char *name, int omode, ulong perm) 
{ 
1990/11211    
	error(Eperm); 
1990/03091    
} 
                 
/* 
 * sysremove() knows this is a nop 
 */ 
void	  
rootclose(Chan *c) 
{ 
} 
                 
#include	"boot.h" 
                 
long	  
rootread(Chan *c, void *buf, long n) 
{ 
                 
1990/11211    
	switch(c->qid.path & ~CHDIR){ 
1990/03091    
	case Qdir: 
		return devdirread(c, buf, n, rootdir, NROOT, devgen); 
                 
	case Qboot:		/* boot */ 
		if(c->offset >= sizeof bootcode) 
			return 0; 
		if(c->offset+n > sizeof bootcode) 
			n = sizeof bootcode - c->offset; 
		memcpy(buf, ((char*)bootcode)+c->offset, n); 
		return n; 
                 
	case Qdev: 
		return 0; 
	} 
1990/11211    
	error(Egreg); 
1990/03091    
	return 0; 
} 
                 
long	  
rootwrite(Chan *c, void *buf, long n) 
{ 
1990/11211    
	error(Egreg); 
1990/03091    
} 
                 
void	  
rootremove(Chan *c) 
{ 
1990/11211    
	error(Eperm); 
1990/03091    
} 
                 
void	  
rootwstat(Chan *c, char *dp) 
{ 
1990/11211    
	error(Eperm); 
1990/03091    
} 


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