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

1990/11211/power/trap.c (diff list | history)

1990/1113/sys/src/9/power/trap.c:327,3331990/11211/sys/src/9/power/trap.c:327,332 (short | long | prev | next)
1990/0227    
	l = &ur->status; 
	for(i=0; i<sizeof regname/sizeof(char*); i+=2, l+=2) 
		print("%s\t%.8lux\t%s\t%.8lux\n", regname[i], l[0], regname[i+1], l[1]); 
	dumpstack(); 
} 
 
/* 
1990/1113/sys/src/9/power/trap.c:393,4211990/11211/sys/src/9/power/trap.c:392,420
1990/0227    
 
 
#undef	CHDIR	/* BUG */ 
#include "/sys/src/libc/mips9sys/sys.h" 
1990/11211    
#include "/sys/src/libc/Nmips9sys/sys.h" 
1990/0227    
 
typedef long Syscall(ulong*); 
Syscall sysaccess, sysbind, sysbrk_, syschdir, sysclose, syscreate; 
1990/11211    
Syscall sysbind, sysbrk_, syschdir, sysclose, syscreate, sysdeath; 
1990/0227    
Syscall	sysdup, syserrstr, sysexec, sysexits, sysfork, sysforkpgrp; 
Syscall	sysfstat, sysfwstat, sysgetpid, syslasterr, sysmount, sysnoted; 
1990/11211    
Syscall	sysfstat, sysfwstat, sysgetpid, sysmount, sysnoted; 
1990/0227    
Syscall	sysnotify, sysopen, syspipe, sysr1, sysread, sysremove, sysseek; 
Syscall syssleep, sysstat, sysuserstr, syswait, syswrite, syswstat; 
1990/11211    
Syscall syssleep, sysstat, syswait, syswrite, syswstat; 
1990/0227    
 
Syscall *systab[]={ 
	[SYSR1]		sysr1, 
1990/0826    
	[___ACCESS___]	sysaccess, 
1990/11211    
	[ERRSTR]	syserrstr, 
1990/0227    
	[BIND]		sysbind, 
	[CHDIR]		syschdir, 
	[CLOSE]		sysclose, 
	[DUP]		sysdup, 
	[ERRSTR]	syserrstr, 
1990/11211    
	[___ERRSTR___]	sysdeath, 
1990/0227    
	[EXEC]		sysexec, 
	[EXITS]		sysexits, 
	[FORK]		sysfork, 
	[FORKPGRP]	sysforkpgrp, 
	[FSTAT]		sysfstat, 
	[LASTERR]	syslasterr, 
1990/11211    
	[___LASTERR___]	sysdeath, 
1990/0227    
	[MOUNT]		sysmount, 
	[OPEN]		sysopen, 
	[READ]		sysread, 
1990/1113/sys/src/9/power/trap.c:426,4321990/11211/sys/src/9/power/trap.c:425,431
1990/0227    
	[WRITE]		syswrite, 
	[PIPE]		syspipe, 
	[CREATE]	syscreate, 
	[USERSTR]	sysuserstr, 
1990/11211    
	[___USERSTR___]	sysdeath, 
1990/0227    
	[BRK_]		sysbrk_, 
	[REMOVE]	sysremove, 
	[WSTAT]		syswstat, 
1990/1113/sys/src/9/power/trap.c:467,4731990/11211/sys/src/9/power/trap.c:466,472
1990/1110    
			msg = "sys: bad sys call"; 
1990/0511    
	    Bad: 
			postnote(u->p, 1, msg, NDebug); 
			error(0, Ebadarg); 
1990/11211    
			error(Ebadarg); 
1990/0511    
		} 
		if(sp & (BY2WD-1)){ 
			pprint("odd sp in sys call pc %lux sp %lux\n", ((Ureg*)UREGADDR)->pc, ((Ureg*)UREGADDR)->sp); 
1990/1113/sys/src/9/power/trap.c:474,4811990/11211/sys/src/9/power/trap.c:473,480
1990/1110    
			msg = "sys: odd stack"; 
1990/0511    
			goto Bad; 
		} 
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-4*BY2WD)) 
1990/0515    
			validaddr(sp, 4*BY2WD, 0); 
1990/11211    
		if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-5*BY2WD)) 
			validaddr(sp, 5*BY2WD, 0); 
1990/0227    
		ret = (*systab[r1])((ulong*)(sp+2*BY2WD)); 
1990/0511    
	} 
1990/0227    
	ur->pc += 4; 
1990/1113/sys/src/9/power/trap.c:491,5071990/11211/sys/src/9/power/trap.c:490,508
1990/0227    
	return ret; 
} 
 
1990/11211    
#include "errstr.h" 
 
1990/0227    
void 
error(Chan *c, int code) 
1990/11211    
error(int code) 
1990/0227    
{ 
	if(c){ 
		u->error.type = c->type; 
		u->error.dev = c->dev; 
	}else{ 
		u->error.type = 0; 
		u->error.dev = 0; 
	} 
	u->error.code = code; 
1990/11211    
	strncpy(u->error, errstrtab[code], NAMELEN); 
	nexterror(); 
} 
 
void 
errors(char *err) 
{ 
	strncpy(u->error, err, NAMELEN); 
1990/0227    
	nexterror(); 
} 
 


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