Use newfgrp, and don't inherit from the old
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 18 Jan 2014 01:55:10 +0000 (17:55 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 18 Jan 2014 01:55:10 +0000 (17:55 -0800)
Not sure why they were doing that, but it's unnecessary for us.

kern/drivers/dev/cons.c
kern/include/ns.h
kern/src/ns/pgrp.c
kern/src/ns/sysfile.c

index 8248780..a418e02 100644 (file)
@@ -352,6 +352,7 @@ pprint(char *fmt, ...)
                printd("%s", buf);
                return 0;
        }
+       /* TODO: this is probably wrong (VFS hack) */
        c = o->fgrp->fd[2];
        if(c==0 || (c->mode!=OWRITE && c->mode!=ORDWR)) {
                printd("%s", buf);
index 625e074..f83c407 100644 (file)
@@ -754,7 +754,7 @@ void                muxclose(struct mnt*);
 struct chan*           namec( char *unused_char_p_t, int unused_int, int, uint32_t);
 struct chan*           newchan(void);
 struct egrp*           newegrp(void);
-struct fgrp*           newfgrp(struct fgrp*);
+struct fgrp*           newfgrp(void);
 struct mount*          newmount(struct mhead*, struct chan*, int unused_int, char *unused_char_p_t);
 struct pgrp*           newpgrp(void);
 struct proc*           newproc(void);
index a287436..9cab980 100644 (file)
@@ -178,7 +178,7 @@ freefgrp(struct kref *k)
 }
 
 struct fgrp*
-newfgrp(struct fgrp *old)
+newfgrp(void)
 {
        struct fgrp *new;
        int n;
@@ -186,13 +186,6 @@ newfgrp(struct fgrp *old)
        new = kzmalloc(sizeof(struct fgrp), 0);
        kref_init(&new->ref, freefgrp, 1);
        n = DELTAFD;
-       if(old != NULL){
-               spin_lock(&old->lock);
-               if(old->maxfd >= n)
-                       n = (old->maxfd+1 + DELTAFD-1)/DELTAFD * DELTAFD;
-               new->maxfd = old->maxfd;
-               spin_unlock(&old->lock);
-       }
        new->nfd = n;
        new->fd = kzmalloc(n * sizeof(struct chan *), 0);
        return new;
@@ -206,8 +199,7 @@ dupfgrp(struct fgrp *f)
        struct fgrp *new;
        int n;
 
-       new = kzmalloc(sizeof(struct fgrp), 0);
-       assert(new);
+       new = kzmalloc(sizeof(struct fgrp), KMALLOC_WAIT);
        kref_init(&new->ref, freefgrp, 1);
        spin_lock(&f->lock);
        if (f->closed) {
index 8315f67..2257773 100644 (file)
@@ -1276,7 +1276,7 @@ int plan9setup(struct proc *new_proc, struct proc *parent)
                 * TODO: One problem is namec wants a current set for things like
                 * genbuf.  So we'll use new_proc for this bootstrapping.  Note
                 * switch_to() also loads the cr3. */
-               new_proc->fgrp = dupfgrp(NULL);
+               new_proc->fgrp = newfgrp();
                new_proc->pgrp = newpgrp();
                old_current = switch_to(new_proc);
                new_proc->slash = namec("#r", Atodir, 0, 0);