Remove struct dev's dc [3/3]
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 15 Sep 2015 15:47:51 +0000 (11:47 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
This was the field that identified the device with one char.

For the most part, this change was just removing dc and using name in
its place for some debugging.

The tricky stuff is that devmnt and devdir were putting the dc into the
struct dir (a D), I think.  We'll see if there are any harmful effects
of that.

22 files changed:
kern/arch/x86/devarch.c
kern/drivers/dev/acpi.c
kern/drivers/dev/alarm.c
kern/drivers/dev/cons.c
kern/drivers/dev/ether.c
kern/drivers/dev/kprof.c
kern/drivers/dev/mnt.c
kern/drivers/dev/nix.c
kern/drivers/dev/pci.c
kern/drivers/dev/pipe.c
kern/drivers/dev/proc.c
kern/drivers/dev/regress.c
kern/drivers/dev/root.c
kern/drivers/dev/srv.c
kern/include/ns.h
kern/src/fdtap.c
kern/src/net/devip.c
kern/src/net/eipconv.c
kern/src/ns/chan.c
kern/src/ns/dev.c
kern/src/ns/devtab.c
kern/src/ns/sysfile.c

index 425b094..4ea42fa 100644 (file)
@@ -488,7 +488,6 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
 }
 
 struct dev archdevtab __devtab = {
-       'P',
        "arch",
 
        devreset,
index e9d4270..65de225 100644 (file)
@@ -1689,7 +1689,6 @@ static long acpiwrite(struct chan *c, void *a, long n, int64_t off)
 }
 
 struct dev acpidevtab __devtab = {
-       'a',
        "acpi",
 
        devreset,
index 14dc8a5..52bd8cd 100644 (file)
@@ -412,7 +412,6 @@ static long alarmwrite(struct chan *c, void *ubuf, long n, int64_t unused)
 }
 
 struct dev alarmdevtab __devtab = {
-       'A',
        "alarm",
 
        devreset,
index a87847c..292d84e 100644 (file)
@@ -840,8 +840,7 @@ static long consread(struct chan *c, void *buf, long n, int64_t offset)
                                error(Enomem);
                        l = 0;
                        for (i = 0; &devtab[i] < __devtabend; i++)
-                               l += snprintf(p + l, READSTR - l, "#%c %s\n", devtab[i].dc,
-                                                         devtab[i].name);
+                               l += snprintf(p + l, READSTR - l, "#%s\n", devtab[i].name);
                        if (waserror()) {
                                kfree(p);
                                nexterror();
@@ -1061,7 +1060,6 @@ static long conswrite(struct chan *c, void *va, long n, int64_t offset)
 }
 
 struct dev consdevtab __devtab = {
-       'c',
        "cons",
 
        devreset,
index a6b2e6d..d33e2ea 100644 (file)
@@ -810,7 +810,6 @@ uint32_t ethercrc(uint8_t * p, int len)
 }
 
 struct dev etherdevtab __devtab = {
-       'l',
        "ether",
 
        etherreset,
index 46c96a1..9ac7b27 100644 (file)
@@ -611,7 +611,6 @@ void trace_printk(const char *fmt, ...)
 }
 
 struct dev kprofdevtab __devtab = {
-       'K',
        "kprof",
 
        devreset,
index b5769cf..7a1c11e 100644 (file)
@@ -1201,11 +1201,13 @@ struct mnt *mntchk(struct chan *c)
  */
 void mntdirfix(uint8_t * dirbuf, struct chan *c)
 {
-       unsigned int r;
-
-       r = devtab[c->type].dc;
+       /* TODO: We used to use the device's char (dc), instead of the type.  not
+        * sure about the effects one way or the other.  This might be the type[2]
+        * and dev[4] in a D (struct dir, see 9p's stat
+        * (http://man.cat-v.org/plan_9/5/stat).  In which case, those should be for
+        * the kernel's use.  Hopefully our kernel. */
        dirbuf += BIT16SZ;      /* skip count */
-       PBIT16(dirbuf, r);
+       PBIT16(dirbuf, c->type);
        dirbuf += BIT16SZ;
        PBIT32(dirbuf, c->dev);
 }
@@ -1219,7 +1221,6 @@ int rpcattn(void *v)
 }
 
 struct dev mntdevtab __devtab = {
-       'M',
        "mnt",
 
        devreset,
index c053408..50b7562 100644 (file)
@@ -525,7 +525,6 @@ static long nixwrite(struct chan *c, void *ubuf, long n, int64_t off)
 }
 
 struct dev nixdevtab __devtab = {
-       't',
        "nix",
 
        devreset,
index 98173af..8ca0e6e 100644 (file)
@@ -253,7 +253,6 @@ static long pciwrite(struct chan *c, void *va, long n, int64_t offset)
 }
 
 struct dev pcidevtab = {
-       '$',
        "pci",
 
        devreset,
index b247bb6..6c63cb2 100644 (file)
@@ -452,7 +452,6 @@ static int pipewstat(struct chan *c, uint8_t * dp, int n)
 }
 
 struct dev pipedevtab __devtab = {
-       '|',
        "pipe",
 
        devreset,
index cbff07c..5976644 100644 (file)
@@ -1307,7 +1307,6 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
 }
 
 struct dev procdevtab __devtab = {
-       'p',
        "proc",
 
        devreset,
index 444a021..9956633 100644 (file)
@@ -178,7 +178,6 @@ regresswrite(struct chan *c, void *a, long n, int64_t unused)
 }
 
 struct dev regressdevtab __devtab = {
-       'Z',
        "regress",
 
        devreset,
index 503591f..40217ed 100644 (file)
@@ -443,7 +443,6 @@ static int rootwstat(struct chan *c, uint8_t *m_buf, int m_buf_sz)
 }
 
 struct dev rootdevtab __devtab = {
-       'r',
        "root",
        devreset,
        rootinit,
index d8ed6bc..6349bb3 100644 (file)
@@ -331,7 +331,6 @@ static long srvwrite(struct chan *c, void *va, long count, int64_t offset)
 }
 
 struct dev srvdevtab __devtab = {
-       's',
        "srv",
 
        devreset,
index a936600..a307d76 100644 (file)
@@ -416,7 +416,6 @@ struct cname {
 };
 
 struct dev {
-       int dc;
        char *name;
 
        void (*reset) (void);
index 26a1397..83d6749 100644 (file)
@@ -73,7 +73,7 @@ int add_fd_tap(struct proc *p, struct fd_tap_req *tap_req)
        }
        if (!devtab[chan->type].tapfd) {
                set_errno(ENOSYS);
-               set_errstr("Device %c does not handle taps", devtab[chan->type].dc);
+               set_errstr("Device %s does not handle taps", devtab[chan->type].name);
                goto out_with_lock;
        }
        /* need to keep chan alive for our call to the device.  someone else
index 119b4da..4e0149b 100644 (file)
@@ -1406,7 +1406,6 @@ int iptapfd(struct chan *chan, struct fd_tap *tap, int cmd)
 }
 
 struct dev ipdevtab __devtab = {
-       .dc = 'I',
        .name = "ip",
 
        .reset = ipreset,
index 799c7e0..274872e 100644 (file)
@@ -132,7 +132,7 @@ void printchan(void (*putch) (int, void **), void **putdat, struct chan *c)
        printfmt(putch, putdat, "off %p ", c->offset);
        printfmt(putch, putdat, "type %p ", c->type);
        if (c->type != -1)
-               printfmt(putch, putdat, "(#%c) ", devtab[c->type].dc);
+               printfmt(putch, putdat, "(#%s) ", devtab[c->type].name);
        printfmt(putch, putdat, "dev %p ", c->dev);
        printfmt(putch, putdat, "mode %p ", c->mode);
        printfmt(putch, putdat, "flag %p ", c->flag);
index ab8d6f5..19b5225 100644 (file)
@@ -1182,8 +1182,8 @@ Open:
                                         * probably saving mode directly, without passing it through
                                         * openmode. */
                                        if (c->mode & O_TRUNC)
-                                               error("Device '%c' %s open failed to clear OTRUNC",
-                                                     devtab[c->type].dc, devtab[c->type].name);
+                                               error("Device %s open failed to clear O_TRUNC",
+                                                     devtab[c->type].name);
                                        break;
                        }
                        break;
index 89a634b..7c7b324 100644 (file)
@@ -45,7 +45,7 @@ devdir(struct chan *c, struct qid qid, char *n,
        if (c->flag & CMSG)
                qid.type |= QTMOUNT;
        db->qid = qid;
-       db->type = devtab[c->type].dc;
+       db->type = c->type;     /* used to use the dev's dc here */
        db->dev = c->dev;
        db->mode = perm;
        db->mode |= qid.type << 24;
@@ -119,7 +119,7 @@ struct chan *devclone(struct chan *c)
        struct chan *nc;
 
        if (c->flag & COPEN)
-               panic("clone of open file type %c\n", devtab[c->type].dc);
+               panic("clone of open file type %s\n", devtab[c->type].name);
 
        nc = newchan();
 
@@ -270,7 +270,7 @@ devstat(struct chan *c, uint8_t * db, int n,
                                                error(Ebadarg);
                                        return n;
                                }
-                               printd("DEVSTAT fails:%c %llu\n", devtab[c->type].dc,
+                               printd("DEVSTAT fails:%s %llu\n", devtab[c->type].name,
                                           c->qid.path);
                                set_errno(ENOENT);
                                error(Enonexist);
index c2a43ca..7b0acd7 100644 (file)
@@ -48,16 +48,13 @@ void devtabshutdown()
                devtab[i].shutdown();
 }
 
-struct dev *devtabget(int dc, int user)
+struct dev *devtabget(const char *name, int user)
 {
-       int i;
-
-       for (i = 0; &devtab[i] < __devtabend; i++) {
-               if (devtab[i].dc == dc)
-                       return &devtab[i];
-       }
+       int i = devno(name, user);
+       if (i > 0)
+               return &devtab[i];
 
-       printk("devtabget FAILED %c\n", dc);
+       printk("devtabget FAILED %s\n", name);
        set_errno(ENOENT);
        error(Enonexist);
 }
@@ -79,8 +76,8 @@ long devtabread(struct chan *c, void *buf, long n, int64_t off)
        for (i = 0; &devtab[i] < __devtabend; i++) {
                dev = &devtab[i];
                printd("p %p e %p e-p %d\n", p, e, e - p);
-               printd("do %d %c %s\n", i, dev->dc, dev->name);
-               p += snprintf(p, e - p, "#%c %s\n", dev->dc, dev->name);
+               printd("do %d %s\n", i, dev->name);
+               p += snprintf(p, e - p, "#%s\n", dev->name);
        }
 
        if (waserror()) {
index ce538f4..8180b27 100644 (file)
@@ -808,7 +808,9 @@ int64_t sysseek(int fd, int64_t off, int whence)
                nexterror();
        }
 
-       if (devtab[c->type].dc == '|')
+       /* TODO: WTF is this?  Is pipe magically the only device that isn't
+        * seekable? */
+       if (!strcmp(devtab[c->type].name, "pipe"))
                error(Eisstream);
 
        switch (whence) {