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

1990/11211/port/sysproc.c (diff list | history)

1990/1009/sys/src/9/port/sysproc.c:183,1891990/11211/sys/src/9/port/sysproc.c:183,189 (short | long | prev | next)
1990/0227    
	n = (*devtab[tc->type].read)(tc, &exec, sizeof(Exec)); 
	if(n < 2) 
    Err: 
		error(0, Ebadexec); 
1990/11211    
		error(Ebadexec); 
1990/0227    
	if(n==sizeof(Exec) && exec.magic==V_MAGIC){ 
		if((exec.text&KZERO) 
		|| (ulong)exec.entry < UTZERO+sizeof(Exec) 
1990/1009/sys/src/9/port/sysproc.c:223,2291990/11211/sys/src/9/port/sysproc.c:223,229
1990/0227    
	d = (t + exec.data) & ~(BY2PG-1); 
	b = (t + exec.data + exec.bss + (BY2PG-1)) & ~(BY2PG-1); 
	if((t|d|b) & KZERO) 
		error(0, Ebadexec); 
1990/11211    
		error(Ebadexec); 
1990/0227    
 
	/* 
	 * Args: pass 1: count 
1990/1009/sys/src/9/port/sysproc.c:446,4861990/11211/sys/src/9/port/sysproc.c:446,464
1990/0227    
} 
 
long 
syslasterr(ulong *arg) 
1990/11211    
sysdeath(ulong *arg) 
1990/0227    
{ 
	Error *e; 
                 
	validaddr(arg[0], sizeof u->error, 1); 
	evenaddr(arg[0]); 
	e = (Error *)arg[0]; 
	memcpy(e, &u->error, sizeof u->error); 
	memset(&u->error, 0, sizeof u->error); 
	e->type = devchar[e->type]; 
	return 0; 
1990/11211    
	pprint("deprecated system call"); 
	pexit("Suicide", 0); 
1990/0227    
} 
 
long 
syserrstr(ulong *arg) 
{ 
	Error *e, err; 
	char buf[ERRLEN]; 
 
	validaddr(arg[1], ERRLEN, 1); 
	e = &err; 
	if(arg[0]){ 
		validaddr(arg[0], sizeof u->error, 0); 
		memcpy(e, (Error*)arg[0], sizeof(Error)); 
		e->type = devno(e->type, 1); 
		if(e->type == -1){ 
			e->type = 0; 
			e->code = Egreg+1;	/* -> "no such error" */ 
		} 
	}else{ 
		memcpy(e, &u->error, sizeof(Error)); 
		memset(&u->error, 0, sizeof(Error)); 
	} 
	(*devtab[e->type].errstr)(e, buf); 
	memcpy((char*)arg[1], buf, sizeof buf); 
1990/11211    
	validaddr(arg[0], ERRLEN, 1); 
	memcpy((char*)arg[0], u->error, ERRLEN); 
1990/0227    
	return 0; 
} 
 
1990/1009/sys/src/9/port/sysproc.c:515,5211990/11211/sys/src/9/port/sysproc.c:493,499
1990/0227    
sysnoted(ulong *arg) 
{ 
	if(u->notified == 0) 
		error(0, Egreg); 
1990/11211    
		error(Egreg); 
1990/0227    
	return 0; 
} 
 
1990/1009/sys/src/9/port/sysproc.c:526,5311990/11211/sys/src/9/port/sysproc.c:504,509
1990/0227    
sysbrk_(ulong *arg) 
{ 
	if(segaddr(&u->p->seg[BSEG], u->p->seg[BSEG].minva, arg[0]) == 0) 
		error(0, Esegaddr); 
1990/11211    
		error(Esegaddr); 
1990/0227    
	return 0; 
} 


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