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

1990/0312/gnot/fault.c (diff list | history)

1990/03091/sys/src/9/gnot/fault.c:83,881990/0312/sys/src/9/gnot/fault.c:83,89 (short | long | prev | next)
1990/03091    
		read = (f->ssw&READ) && !(f->ssw&RM); 
	else 
		read = f->ssw&(FB|FC); 
1990/0312    
/* print("fault pc=%lux addr=%lux read %d\n", ur->pc, badvaddr, read); /**/ 
1990/03091    
 
	s = seg(u->p, addr); 
	if(s == 0){ 
1990/03091/sys/src/9/gnot/fault.c:272,2801990/0312/sys/src/9/gnot/fault.c:273,282
1990/03091    
	Seg *s; 
 
	if((long)len < 0) 
		panic("validaddr len %lux\n", len); 
1990/0312    
		goto Err; 
1990/03091    
	s = seg(u->p, addr); 
	if(s==0 || addr+len>s->maxva || (write && (s->o->flag&OWRPERM)==0)){ 
1990/0312    
    Err: 
1990/03091    
		pprint("invalid address in sys call pc %lux sp %lux\n", ((Ureg*)UREGADDR)->pc, ((Ureg*)UREGADDR)->sp); 
		postnote(u->p, 1, "bad address", NDebug); 
		error(0, Ebadarg); 


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