From 979b264d35bc6b057054c217448adeac54aff770 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 16 Dec 1993 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1993-12-16 --- carrera/fns.h | 2 +- carrera/main.c | 2 ++ port/chan.c | 19 +++++++++++-------- port/devlance.c | 2 +- power/fns.h | 1 + 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/carrera/fns.h b/carrera/fns.h index 87141b30fe329fc91b186d2a9ae2867f2ec156ab..331d58f33f805c60c7b139a4448b9d6e9bc45b04 100644 --- a/carrera/fns.h +++ b/carrera/fns.h @@ -68,7 +68,7 @@ void prflush(void); ulong prid(void); void printinit(void); #define procrestore(p) -void procsave(Proc*) +void procsave(Proc*); #define procsetup(p) ((p)->fpstate = FPinit) void purgetlb(int); int putnvram(ulong, void*, int); diff --git a/carrera/main.c b/carrera/main.c index e28a8957038213fca315c2c77073e3bc93ecea86..6a3346c52b13e054afe60127b1a4ec480e224930 100644 --- a/carrera/main.c +++ b/carrera/main.c @@ -419,6 +419,8 @@ rdbginit(void) void procsave(Proc *p) { + USED(p); + /* keep track of tlbfaults */ up->counter[TLBCNTR] += m->tlbfault - m->otlbfault; m->otlbfault = m->tlbfault; diff --git a/port/chan.c b/port/chan.c index 0b18449d0fddc377e189e561a1b71e1b4c054283..2e3e66773dc3ad0dd38a8c89f16b611b3dc5cce8 100644 --- a/port/chan.c +++ b/port/chan.c @@ -204,24 +204,27 @@ mount(Chan *new, Chan *old, int flag, char *spec) m->mount = newmount(m, old, 0, 0); } - if(m->mount && order == MREPL) { - mountfree(m->mount); - m->mount = 0; - } - nm = newmount(m, new, flag, spec); if(new->mnt != 0) { + /* + * copy a union when binding it onto a directory + */ + flg = order; + if(order == MREPL) + flg = MAFTER; h = &nm->next; for(um = new->mnt->next; um; um = um->next) { - flg = um->flag; - if(flg == 0) - flg = MAFTER; f = newmount(m, um->to, flg, um->spec); *h = f; h = &f->next; } } + if(m->mount && order == MREPL) { + mountfree(m->mount); + m->mount = 0; + } + if(flag & MCREATE) new->flag |= CCREATE; diff --git a/port/devlance.c b/port/devlance.c index fbf6d55f2012caa16635cf5121faf50c5e6930f4..402f18cb5ea6d380a7f689e1f5b1883bc06f9761 100644 --- a/port/devlance.c +++ b/port/devlance.c @@ -475,7 +475,7 @@ lancewrite(Chan *c, void *buf, long n, ulong offset) qlock(&l.tlock); if(waserror()) { - qunlock(&ctlr->tlock); + qunlock(&l.tlock); nexterror(); } diff --git a/power/fns.h b/power/fns.h index 656d93e2ab3dd187f5aa45c80a41ad0eea75513e..1910f6934b10888986d5a36f5186b6111c077574 100644 --- a/power/fns.h +++ b/power/fns.h @@ -1,5 +1,6 @@ #include "../port/portfns.h" +#define affinity(x) m void arginit(void); void clearmmucache(void); void clock(Ureg*);