diff options
author | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-06 05:28:57 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-06 05:28:57 +0100 |
commit | 5acde1e791e879cc24dc4fe8738994ea3a4bb9ba (patch) | |
tree | b147efa4ce3f9846e688eb611347eb43766d47ab | |
parent | 1a450db960aa3c542c84a5fff0f66c5ce95c853f (diff) |
make smalloc() uninterruptable as most callers cant handle it anyway
-rw-r--r-- | sys/src/9/port/alloc.c | 5 | ||||
-rw-r--r-- | sys/src/9/port/debugalloc.c | 5 | ||||
-rw-r--r-- | sys/src/9/port/devenv.c | 6 | ||||
-rw-r--r-- | sys/src/9/port/proc.c | 5 |
4 files changed, 13 insertions, 8 deletions
diff --git a/sys/src/9/port/alloc.c b/sys/src/9/port/alloc.c index ed9797967..194eb9f37 100644 --- a/sys/src/9/port/alloc.c +++ b/sys/src/9/port/alloc.c @@ -174,7 +174,10 @@ smalloc(ulong size) 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; diff --git a/sys/src/9/port/debugalloc.c b/sys/src/9/port/debugalloc.c index e6a97e048..48f9f7126 100644 --- a/sys/src/9/port/debugalloc.c +++ b/sys/src/9/port/debugalloc.c @@ -440,7 +440,10 @@ smalloc(ulong size) 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; diff --git a/sys/src/9/port/devenv.c b/sys/src/9/port/devenv.c index b744b12fe..e93a95139 100644 --- a/sys/src/9/port/devenv.c +++ b/sys/src/9/port/devenv.c @@ -283,7 +283,11 @@ envwrite(Chan *c, void *a, long n, vlong off) 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); diff --git a/sys/src/9/port/proc.c b/sys/src/9/port/proc.c index 37cdbf18d..b3249ec97 100644 --- a/sys/src/9/port/proc.c +++ b/sys/src/9/port/proc.c @@ -1123,12 +1123,7 @@ pexit(char *exitstr, int freemem) 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]; |