|
|
|
1996/0223/sys/src/9/port/devboot.c:1,142 –
1997/0327/sys/src/9/port/devboot.c:0
(short | long | prev)
|
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
| |
}
|