ref: 1349cf6174d0808febc6d7d19e5c9d510ccb61dc
parent: b4677f563ddab441a94b3453327bbaa949a75018
author: cinap_lenrek <cinap_lenrek@rei2.9hal>
date: Mon Feb 6 00:28:57 EST 2012
make smalloc() uninterruptable as most callers cant handle it anyway
--- a/sys/src/9/port/alloc.c
+++ b/sys/src/9/port/alloc.c
@@ -174,7 +174,10 @@
v = poolalloc(mainmem, size+Npadlong*sizeof(ulong));
if(v != nil)
break;
- tsleep(&up->sleep, return0, 0, 100);
+ if(!waserror()){+ tsleep(&up->sleep, return0, 0, 100);
+ poperror();
+ }
}
if(Npadlong){v = (ulong*)v+Npadlong;
--- a/sys/src/9/port/debugalloc.c
+++ b/sys/src/9/port/debugalloc.c
@@ -440,7 +440,10 @@
remember(getcallerpc(&size), v);
if(v != nil)
break;
- tsleep(&up->sleep, return0, 0, 100);
+ if(!waserror()){+ tsleep(&up->sleep, return0, 0, 100);
+ poperror();
+ }
}
memset(v, 0, size);
return v;
--- a/sys/src/9/port/devenv.c
+++ b/sys/src/9/port/devenv.c
@@ -283,7 +283,11 @@
len = offset+n;
if(len > e->len) {- s = smalloc(len);
+ s = malloc(len);
+ if(s == nil){+ wunlock(eg);
+ error(Enomem);
+ }
if(e->value){memmove(s, e->value, e->len);
free(e->value);
--- a/sys/src/9/port/proc.c
+++ b/sys/src/9/port/proc.c
@@ -1123,12 +1123,7 @@
panic("boot process died: %s", exitstr);}
- while(waserror())
- ;
-
wq = smalloc(sizeof(Waitq));
- poperror();
-
wq->w.pid = up->pid;
utime = up->time[TUser] + up->time[TCUser];
stime = up->time[TSys] + up->time[TCSys];
--
⑨