summaryrefslogtreecommitdiff
path: root/os/port
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2009-08-25 19:29:15 +0100
committerforsyth <forsyth@vitanuova.com>2009-08-25 19:29:15 +0100
commit67d4cb07c1a40a27872c4da282fbe1417aa87731 (patch)
tree2fb0fc0bd3bf034357bcbfff147c0efc09ab539d /os/port
parent961f7d6c4c59cea370b706e4643853ab19193ffe (diff)
20090825-1929
Diffstat (limited to 'os/port')
-rw-r--r--os/port/devcons.c18
-rw-r--r--os/port/devtinyfs.c2
-rw-r--r--os/port/inferno.c1
-rw-r--r--os/port/pgrp.c24
4 files changed, 13 insertions, 32 deletions
diff --git a/os/port/devcons.c b/os/port/devcons.c
index 2f24a36f..28f4558f 100644
--- a/os/port/devcons.c
+++ b/os/port/devcons.c
@@ -626,7 +626,6 @@ enum{
Qmemory,
Qmsec,
Qnull,
- Qpin,
Qrandom,
Qnotquiterandom,
Qsysname,
@@ -650,7 +649,6 @@ static Dirtab consdir[]=
"memory", {Qmemory}, 0, 0444,
"msec", {Qmsec}, NUMSIZE, 0444,
"null", {Qnull}, 0, 0666,
- "pin", {Qpin}, 0, 0666,
"random", {Qrandom}, 0, 0444,
"notquiterandom", {Qnotquiterandom}, 0, 0444,
"sysname", {Qsysname}, 0, 0664,
@@ -956,12 +954,6 @@ consread(Chan *c, void *buf, long n, vlong offset)
else
return qread(kscanq, buf, n);
- case Qpin:
- p = "pin set";
- if(up->env->pgrp->pin == Nopin)
- p = "no pin";
- return readstr(offset, buf, n, p);
-
case Qtime:
snprint(tmp, sizeof(tmp), "%.lld", (vlong)mseconds()*1000);
return readstr(offset, buf, n, tmp);
@@ -1146,16 +1138,6 @@ conswrite(Chan *c, void *va, long n, vlong offset)
case Qnull:
break;
- case Qpin:
- if(up->env->pgrp->pin != Nopin)
- error("pin already set");
- if(n >= sizeof(buf))
- n = sizeof(buf)-1;
- strncpy(buf, va, n);
- buf[n] = '\0';
- up->env->pgrp->pin = atoi(buf);
- return n;
-
case Qsysname:
if(offset != 0)
error(Ebadarg);
diff --git a/os/port/devtinyfs.c b/os/port/devtinyfs.c
index b63caf3f..19e1651f 100644
--- a/os/port/devtinyfs.c
+++ b/os/port/devtinyfs.c
@@ -337,7 +337,7 @@ newfile(Tfs *fs, char *name)
rock.f->bno = mapalloc(rock.fs);
rock.f->fbno = Notabno;
rock.f->r = 1;
- rock.f->pin = up->env->pgrp->pin;
+ rock.f->pin = Notapin;
/* write directory block */
if(waserror()){
diff --git a/os/port/inferno.c b/os/port/inferno.c
index 8858ec1e..7653f2d2 100644
--- a/os/port/inferno.c
+++ b/os/port/inferno.c
@@ -861,7 +861,6 @@ Sys_pctl(void *fp)
np.np->slash = cclone(dot);
cnameclose(np.np->slash->name);
np.np->slash->name = newcname("/");
- np.np->pin = o->pgrp->pin; /* pin is ALWAYS inherited */
np.np->nodevs = o->pgrp->nodevs;
opg = o->pgrp;
o->pgrp = np.np;
diff --git a/os/port/pgrp.c b/os/port/pgrp.c
index 6b2d7d5c..309e2153 100644
--- a/os/port/pgrp.c
+++ b/os/port/pgrp.c
@@ -16,7 +16,6 @@ newpgrp(void)
p = smalloc(sizeof(Pgrp));
p->ref = 1;
p->pgrpid = incref(&pgrpid);
- p->pin = Nopin;
p->progmode = 0644;
p->privatemem = 0;
return p;
@@ -83,18 +82,23 @@ pgrpcpy(Pgrp *to, Pgrp *from)
Mhead *f, **tom, **l, *mh;
wlock(&from->ns);
+ if(waserror()){
+ wunlock(&from->ns);
+ nexterror();
+ }
order = 0;
tom = to->mnthash;
for(i = 0; i < MNTHASH; i++) {
l = tom++;
for(f = from->mnthash[i]; f; f = f->hash) {
rlock(&f->lock);
- mh = malloc(sizeof(Mhead));
- if(mh == nil) {
+ if(waserror()){
runlock(&f->lock);
- wunlock(&from->ns);
- error(Enomem);
+ nexterror();
}
+ mh = malloc(sizeof(Mhead));
+ if(mh == nil)
+ error(Enomem);
mh->from = f->from;
mh->ref = 1;
incref(mh->from);
@@ -103,16 +107,12 @@ pgrpcpy(Pgrp *to, Pgrp *from)
link = &mh->mount;
for(m = f->mount; m; m = m->next) {
n = newmount(mh, m->to, m->mflag, m->spec);
- if(n == nil) {
- runlock(&f->lock);
- wunlock(&from->ns);
- error(Enomem);
- }
m->copy = n;
pgrpinsert(&order, m);
*link = n;
link = &n->next;
}
+ poperror();
runlock(&f->lock);
}
}
@@ -124,12 +124,12 @@ pgrpcpy(Pgrp *to, Pgrp *from)
m->copy->mountid = mountid.ref++;
unlock(&mountid.l);
- to->pin = from->pin;
-
+ to->progmode = from->progmode;
to->slash = cclone(from->slash);
to->dot = cclone(from->dot);
to->nodevs = from->nodevs;
+ poperror();
wunlock(&from->ns);
}