make smalloc() uninterruptable as most callers cant handle it anyway

This commit is contained in:
cinap_lenrek 2012-02-06 05:28:57 +01:00
parent 1a450db960
commit 5acde1e791
4 changed files with 13 additions and 8 deletions

View file

@ -174,7 +174,10 @@ smalloc(ulong size)
v = poolalloc(mainmem, size+Npadlong*sizeof(ulong)); v = poolalloc(mainmem, size+Npadlong*sizeof(ulong));
if(v != nil) if(v != nil)
break; break;
tsleep(&up->sleep, return0, 0, 100); if(!waserror()){
tsleep(&up->sleep, return0, 0, 100);
poperror();
}
} }
if(Npadlong){ if(Npadlong){
v = (ulong*)v+Npadlong; v = (ulong*)v+Npadlong;

View file

@ -440,7 +440,10 @@ smalloc(ulong size)
remember(getcallerpc(&size), v); remember(getcallerpc(&size), v);
if(v != nil) if(v != nil)
break; break;
tsleep(&up->sleep, return0, 0, 100); if(!waserror()){
tsleep(&up->sleep, return0, 0, 100);
poperror();
}
} }
memset(v, 0, size); memset(v, 0, size);
return v; return v;

View file

@ -283,7 +283,11 @@ envwrite(Chan *c, void *a, long n, vlong off)
len = offset+n; len = offset+n;
if(len > e->len) { if(len > e->len) {
s = smalloc(len); s = malloc(len);
if(s == nil){
wunlock(eg);
error(Enomem);
}
if(e->value){ if(e->value){
memmove(s, e->value, e->len); memmove(s, e->value, e->len);
free(e->value); free(e->value);

View file

@ -1123,12 +1123,7 @@ pexit(char *exitstr, int freemem)
panic("boot process died: %s", exitstr); panic("boot process died: %s", exitstr);
} }
while(waserror())
;
wq = smalloc(sizeof(Waitq)); wq = smalloc(sizeof(Waitq));
poperror();
wq->w.pid = up->pid; wq->w.pid = up->pid;
utime = up->time[TUser] + up->time[TCUser]; utime = up->time[TUser] + up->time[TCUser];
stime = up->time[TSys] + up->time[TCSys]; stime = up->time[TSys] + up->time[TCSys];