| plan 9 kernel history: overview | file list | diff list |
1990/0617/gnot/fault.c (diff list | history)
| 1990/0614/sys/src/9/gnot/fault.c:280,298 – 1990/0617/sys/src/9/gnot/fault.c:280,305 (short | long | prev | next) | ||
| 1990/03091 | void validaddr(ulong addr, ulong len, int write) { | |
| 1990/0617 | Seg *s, *ns; | |
| 1990/03091 |
| |
| 1990/0312 |
| |
| 1990/03091 |
| |
| 1990/0617 | if((long)len < 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); } | |
| 1990/0617 | Again: s = seg(u->p, addr); if(s==0) goto Err; if(write && (s->o->flag&OWRPERM)==0) goto Err; if(addr+len > s->maxva){ len -= s->maxva - addr; addr = s->maxva; goto Again; } | |
| 1990/03091 | } | |