error: return usable error strings, not nothing.
authorRonald G. Minnich <rminnich@gmail.com>
Fri, 22 Jan 2016 18:47:20 +0000 (10:47 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 25 Jan 2016 14:59:36 +0000 (09:59 -0500)
This is a way to get us to clean up our act on errstrs.
Bare errnos are frequently unusable, as were the Plan 9
canned error strings. At the very least, this will
show the file that produced the error. It should show
the line number but does not (why?).

But it's way better than nothing.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
[fixed the macro to show the line number]
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
37 files changed:
kern/arch/x86/devarch.c
kern/arch/x86/perfmon.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/drivers/dev/version.c
kern/drivers/net/bnx2x/bnx2x_dev.c
kern/drivers/net/ether8169.c
kern/drivers/net/ether82563.c
kern/drivers/net/etherigbe.c
kern/include/err.h
kern/src/net/arp.c
kern/src/net/devip.c
kern/src/net/ethermedium.c
kern/src/net/iproute.c
kern/src/net/netif.c
kern/src/net/netlog.c
kern/src/ns/chan.c
kern/src/ns/dev.c
kern/src/ns/devtab.c
kern/src/ns/pgrp.c
kern/src/ns/sysfile.c
kern/src/page_alloc.c
kern/src/process.c
kern/src/profiler.c
kern/src/slab.c
kern/src/syscall.c

index 04dba60..bbdec43 100644 (file)
@@ -297,7 +297,7 @@ static void checkport(int start, int end)
 
        if (iounused(start, end))
                return;
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 static struct chan *archattach(char *spec)
@@ -523,7 +523,7 @@ static long archread(struct chan *c, void *a, long n, int64_t offset)
                        return n;
                case Qiow:
                        if (n & 1)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        checkport(offset, offset + n);
                        sp = a;
                        for (port = offset; port < offset + n; port += 2)
@@ -531,7 +531,7 @@ static long archread(struct chan *c, void *a, long n, int64_t offset)
                        return n;
                case Qiol:
                        if (n & 3)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        checkport(offset, offset + n);
                        lp = a;
                        for (port = offset; port < offset + n; port += 4)
@@ -544,13 +544,13 @@ static long archread(struct chan *c, void *a, long n, int64_t offset)
                case Qmsr:
                        if (!address_range_find(msr_rd_wlist, ARRAY_SIZE(msr_rd_wlist),
                                                                        (uintptr_t) offset))
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        core_set_init(&cset);
                        core_set_fill_available(&cset);
                        msr_set_address(&msra, (uint32_t) offset);
                        values = kzmalloc(num_cores * sizeof(uint64_t), KMALLOC_WAIT);
                        if (!values)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        msr_set_values(&msrv, values, num_cores);
 
                        err = msr_cores_read(&cset, &msra, &msrv);
@@ -564,7 +564,7 @@ static long archread(struct chan *c, void *a, long n, int64_t offset)
                                                n = -1;
                                } else {
                                        kfree(values);
-                                       error(ERANGE, NULL);
+                                       error(ERANGE, ERROR_FIXME);
                                }
                        } else {
                                n = -1;
@@ -586,11 +586,11 @@ static long archread(struct chan *c, void *a, long n, int64_t offset)
                        return n;
                }
                default:
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
 
        if ((buf = kzmalloc(n, 0)) == NULL)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        p = buf;
        n = n / Linelen;
        offset = offset / Linelen;
@@ -648,7 +648,7 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
                        return n;
                case Qiow:
                        if (n & 1)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        checkport(offset, offset + n);
                        sp = a;
                        for (port = offset; port < offset + n; port += 2)
@@ -656,7 +656,7 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
                        return n;
                case Qiol:
                        if (n & 3)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        checkport(offset, offset + n);
                        lp = a;
                        for (port = offset; port < offset + n; port += 4)
@@ -665,9 +665,9 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
                case Qmsr:
                        if (!address_range_find(msr_wr_wlist, ARRAY_SIZE(msr_wr_wlist),
                                                                        (uintptr_t) offset))
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        if (n != sizeof(uint64_t))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        if (memcpy_from_user_errno(current, &value, a, sizeof(value)))
                                return -1;
 
@@ -678,7 +678,7 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
 
                        err = msr_cores_write(&cset, &msra, &msrv);
                        if (unlikely(err))
-                               error(-err, NULL);
+                               error(-err, ERROR_FIXME);
                        return sizeof(uint64_t);
                case Qperf: {
                        struct perf_context *pc = (struct perf_context *) c->aux;
@@ -688,7 +688,7 @@ static long archwrite(struct chan *c, void *a, long n, int64_t offset)
                        return arch_perf_write(pc, a, n);
                }
                default:
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
        return 0;
 }
index d506b80..3655d79 100644 (file)
@@ -398,7 +398,7 @@ static int perfmon_install_session_alloc(struct perfmon_session *ps,
                i = -ENFILE;
        spin_unlock(&ps->lock);
        if (unlikely(i < 0))
-               error(-i, NULL);
+               error(-i, ERROR_FIXME);
 
        return i;
 }
@@ -444,7 +444,7 @@ static void perfmon_alloc_get(struct perfmon_session *ps, int ped, bool reset,
        struct perfmon_alloc *pa;
 
        if (unlikely((ped < 0) || (ped >= ARRAY_SIZE(ps->allocs))))
-               error(EBADFD, NULL);
+               error(EBADFD, ERROR_FIXME);
        spin_lock(&ps->lock);
        pa = ps->allocs[ped];
        if (likely(pa)) {
@@ -455,7 +455,7 @@ static void perfmon_alloc_get(struct perfmon_session *ps, int ped, bool reset,
        }
        spin_unlock(&ps->lock);
        if (unlikely(!pa))
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
        *ppa = pa;
 }
 
index fd71814..9a255eb 100644 (file)
@@ -1617,7 +1617,7 @@ static long acpiread(struct chan *c, void *a, long n, int64_t off)
                                error(EFAIL, "region not configured");
                        return regio(reg, a, n, off, 0);
        }
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
        return -1;
 }
 
@@ -1635,7 +1635,7 @@ static long acpiwrite(struct chan *c, void *a, long n, int64_t off)
                return regio(reg, a, n, off, 1);
        }
        if (c->qid.path != Qctl)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
 
        cb = parsecmd(a, n);
        if (waserror()) {
index 889384c..391635f 100644 (file)
@@ -246,9 +246,9 @@ static struct chan *alarmopen(struct chan *c, int omode)
                case Qtopdir:
                case Qalarmdir:
                        if (omode & O_REMCLO)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        if (omode & O_WRITE)
-                               error(EISDIR, NULL);
+                               error(EISDIR, ERROR_FIXME);
                        break;
                case Qclone:
                        a = kzmalloc(sizeof(struct proc_alarm), KMALLOC_WAIT);
@@ -299,12 +299,12 @@ static struct chan *alarmopen(struct chan *c, int omode)
 
 static void alarmcreate(struct chan *c, char *name, int omode, uint32_t perm)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 static void alarmremove(struct chan *c)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 static int alarmwstat(struct chan *c, uint8_t * dp, int n)
@@ -363,7 +363,7 @@ static long alarmwrite(struct chan *c, void *ubuf, long n, int64_t unused)
        switch (TYPE(c->qid)) {
                case Qtopdir:
                case Qalarmdir:
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                case Qctl:
                        p_alarm = QID2A(c->qid);
                        cb = parsecmd(ubuf, n);
index 23f935b..e1782f2 100644 (file)
@@ -1086,7 +1086,7 @@ static long conswrite(struct chan *c, void *va, long n, int64_t off)
 
                case Qbintime:
                        if (!iseve())
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        return writebintime(a, n);
 
 #if 0
@@ -1122,14 +1122,14 @@ static long conswrite(struct chan *c, void *va, long n, int64_t off)
                        }
                        break;
                case Qsysctl:
-                       //if (!iseve()) error(EPERM, NULL);
+                       //if (!iseve()) error(EPERM, ERROR_FIXME);
                        cb = parsecmd(a, n);
                        if (cb->nf > 1)
                        printd("cons sysctl cmd %s\n", cb->f[0]);
 
                case Qreboot:
                        if (!iseve())
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        cb = parsecmd(a, n);
 
                        if (waserror()) {
@@ -1204,9 +1204,9 @@ static long conswrite(struct chan *c, void *va, long n, int64_t off)
                                break;
                        }
                        if (!iseve())
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        if (buf[0] < '0' || '9' < buf[0])
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        fd = strtoul(buf, 0, 0);
                        swc = fdtochan(fd, -1, 1, 1);
                        setswapchan(swc);
@@ -1215,9 +1215,9 @@ static long conswrite(struct chan *c, void *va, long n, int64_t off)
 
                case Qsysname:
                        if (offset != 0)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        if (n <= 0 || n >= sizeof buf)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        strncpy(buf, a, n);
                        buf[n] = 0;
                        if (buf[n - 1] == '\n')
@@ -1438,7 +1438,7 @@ static int writebintime(char *buf, int n)
        switch (*buf) {
                case 'n':
                        if (n < sizeof(int64_t))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        le2int64_t(&delta, p);
 #if 0
                        todset(delta, 0, 0);
@@ -1446,7 +1446,7 @@ static int writebintime(char *buf, int n)
                        break;
                case 'd':
                        if (n < sizeof(int64_t) + sizeof(long))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        p = le2int64_t(&delta, p);
                        le2long(&period, p);
 #if 0
@@ -1455,10 +1455,10 @@ static int writebintime(char *buf, int n)
                        break;
                case 'f':
                        if (n < sizeof(uint64_t))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        le2int64_t(&fasthz, p);
                        if (fasthz <= 0)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
 #if 0
                        todsetfreq(fasthz);
 #endif
index 3b9c5e6..2bd885c 100644 (file)
@@ -71,15 +71,15 @@ struct chan *etherattach(char *spec)
                /* somebody interpret this for me. */
                if (((ctlrno == 0) && (p == spec)) ||
                        (ctlrno >= MaxEther) || ((*p) && (*p != '.')))
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                if (*p == '.') {        /* vlan */
                        vlanid = strtoul(p + 1, &p, 0);
                        if (vlanid <= 0 || vlanid > 0xFFF || *p)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                }
        }
        if ((ether = etherxx[ctlrno]) == 0)
-               error(ENODEV, NULL);
+               error(ENODEV, ERROR_FIXME);
        rlock(&ether->rwlock);
        if (waserror()) {
                runlock(&ether->rwlock);
@@ -487,11 +487,11 @@ static long etherwrite(struct chan *chan, void *buf, long n, int64_t unused)
                        l = ether->ctl(ether, buf, n);
                        goto out;
                }
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        }
 
        if (n > ether->maxmtu + ETHERHDRSIZE)
-               error(E2BIG, NULL);
+               error(E2BIG, ERROR_FIXME);
        bp = allocb(n);
        if (waserror()) {
                freeb(bp);
@@ -534,7 +534,7 @@ static long etherbwrite(struct chan *chan, struct block *bp, uint32_t unused)
        }
        if (n > ether->maxmtu + ETHERHDRSIZE && (bp->flag & Btso) == 0) {
                freeb(bp);
-               error(E2BIG, NULL);
+               error(E2BIG, ERROR_FIXME);
        }
        n = etheroq(ether, bp);
        poperror();
@@ -575,7 +575,7 @@ static long vlanctl(struct ether *ether, void *buf, long n)
                return 0;
        }
        kfree(cb);
-       error(EINVAL, NULL);
+       error(EINVAL, ERROR_FIXME);
        return -1;      /* not reached */
 }
 
@@ -603,13 +603,13 @@ static struct ether *vlanalloc(struct ether *ether, int id)
                        fid = i;
        }
        if (fid < 0)
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
        snprintf(name, sizeof(name), "ether%d.%d", ether->ctlrno, id);
        vlan = ether->vlans[fid];
        if (vlan == NULL) {
                vlan = kzmalloc(sizeof(struct ether), 1);
                if (vlan == NULL)
-                       error(ENOMEM, NULL);
+                       error(ENOMEM, ERROR_FIXME);
                rwinit(&vlan->rwlock);
                qlock_init(&vlan->vlq);
                netifinit(vlan, name, Ntypes, ether->limit);
index 06a58f1..71889ec 100644 (file)
@@ -106,7 +106,7 @@ static void kprof_alarm_handler(struct alarm_waiter *waiter,
 static struct chan *kprof_attach(char *spec)
 {
        if (!kprof.alarms)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
 
        return devattach(devname(), spec);
 }
@@ -167,7 +167,7 @@ static void kprof_fetch_profiler_data(void)
        char *ndata = krealloc(kprof.pdata, psize, KMALLOC_WAIT);
 
        if (!ndata)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        kprof.pdata = ndata;
        while (kprof.psize < psize) {
                size_t csize = profiler_read(kprof.pdata + kprof.psize,
@@ -231,7 +231,7 @@ static void kprof_init(void)
        kprof.alarms = kzmalloc(sizeof(struct alarm_waiter) * num_cores,
                                                        KMALLOC_WAIT);
        if (!kprof.alarms)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        if (waserror()) {
                kfree(kprof.alarms);
                kprof.alarms = NULL;
@@ -303,7 +303,7 @@ static struct chan *kprof_open(struct chan *c, int omode)
 {
        if (c->qid.type & QTDIR) {
                if (openmode(omode) != O_READ)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
        }
        c->mode = openmode(omode);
        c->flag |= COPEN;
@@ -534,7 +534,7 @@ static long kprof_write(struct chan *c, void *a, long n, int64_t unused)
                }
                break;
        default:
-               error(EBADFD, NULL);
+               error(EBADFD, ERROR_FIXME);
        }
        kfree(cb);
        poperror();
index fbff606..7a2fbc3 100644 (file)
@@ -188,7 +188,7 @@ long mntversion(struct chan *c, char *version, int msize, int returnlen)
                }
                if (returnlen > 0) {
                        if (returnlen < k)
-                               error(ENAMETOOLONG, NULL);
+                               error(ENAMETOOLONG, ERROR_FIXME);
                        memmove(version, buf, k);
                }
                return k;
@@ -285,7 +285,7 @@ long mntversion(struct chan *c, char *version, int msize, int returnlen)
        k = strlen(f.version);
        if (returnlen > 0) {
                if (returnlen < k)
-                       error(ENAMETOOLONG, NULL);
+                       error(ENAMETOOLONG, ERROR_FIXME);
                memmove(version, f.version, k);
        }
 
@@ -304,7 +304,7 @@ struct chan *mntauth(struct chan *c, char *spec)
                mntversion(c, VERSION9P, MAXRPC, 0);
                m = c->mux;
                if (m == NULL)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
 
        c = mntchan();
@@ -366,7 +366,7 @@ static struct chan *mntattach(char *muxattach)
                mntversion(c, NULL, 0, 0);
                m = c->mux;
                if (m == NULL)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
 
        c = mntchan();
@@ -515,7 +515,7 @@ static int mntstat(struct chan *c, uint8_t * dp, int n)
        struct mntrpc *r;
 
        if (n < BIT16SZ)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        m = mntchk(c);
        r = mntralloc(c, m->msize);
        if (waserror()) {
@@ -825,7 +825,7 @@ void mountrpc(struct mnt *m, struct mntrpc *r)
                        } else
                                error(EFAIL, r->reply.ename);
                case Rflush:
-                       error(EINTR, NULL);
+                       error(EINTR, ERROR_FIXME);
                default:
                        if (t == r->request.type + 1)
                                break;
@@ -839,7 +839,7 @@ void mountrpc(struct mnt *m, struct mntrpc *r)
                                ("mnt: proc %s %lu: mismatch from %s %s rep 0x%p tag %d fid %d T%d R%d rp %d\n",
                                 "current->text", "current->pid", sn, cn, r, r->request.tag,
                                 r->request.fid, r->request.type, r->reply.type, r->reply.tag);
-                       error(EPROTO, NULL);
+                       error(EPROTO, ERROR_FIXME);
        }
 }
 
@@ -878,7 +878,7 @@ void mountio(struct mnt *m, struct mntrpc *r)
        if (n < 0)
                panic("bad message type in mountio");
        if (devtab[m->c->type].write(m->c, r->rpc, n, 0) != n)
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
 /*     r->stime = fastticks(NULL); */
        r->reqlen = n;
 
@@ -899,7 +899,7 @@ void mountio(struct mnt *m, struct mntrpc *r)
        spin_unlock(&m->lock);
        while (r->done == 0) {
                if (mntrpcread(m, r) < 0)
-                       error(EIO, NULL);
+                       error(EIO, ERROR_FIXME);
                mountmux(m, r);
        }
        mntgate(m);
index 65f8297..016b87e 100644 (file)
@@ -327,9 +327,9 @@ static struct chan *nixopen(struct chan *c, int omode)
        case Qtopdir:
        case Qnixdir:
                if (omode & O_REMCLO)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                if (omode & O_WRITE)
-                       error(EISDIR, NULL);
+                       error(EISDIR, ERROR_FIXME);
                break;
        case Qclone:
                spin_lock_irqsave(&nixlock);
@@ -371,12 +371,12 @@ static struct chan *nixopen(struct chan *c, int omode)
 
 static void nixcreate(struct chan *c, char *name, int omode, uint32_t perm)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 static void nixremove(struct chan *c)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 static int nixwstat(struct chan *c, uint8_t * dp, int n)
@@ -447,7 +447,7 @@ static long nixwrite(struct chan *c, void *ubuf, long n, int64_t off)
        case Qtopdir:
        case Qnixdir:
        case Qstat:
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        case Qctl:
                nix = c->aux;
                cb = parsecmd(ubuf, n);
index 40f9fce..52953e2 100644 (file)
@@ -160,7 +160,7 @@ static long pciread(struct chan *c, void *va, long n, int64_t offset)
                        tbdf = MKBUS(BusPCI, 0, 0, 0) | BUSBDF((uint32_t) c->qid.path);
                        p = pcimatchtbdf(tbdf);
                        if (p == NULL)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        ebuf = buf + sizeof buf - 1;    /* -1 for newline */
                        w = seprintf(buf, ebuf, "%.2x.%.2x.%.2x %.4x/%.4x %3d",
                                                 p->ccrb, p->ccru, p->ccrp, p->vid, p->did, p->intl);
@@ -177,7 +177,7 @@ static long pciread(struct chan *c, void *va, long n, int64_t offset)
                        tbdf = MKBUS(BusPCI, 0, 0, 0) | BUSBDF((uint32_t) c->qid.path);
                        p = pcimatchtbdf(tbdf);
                        if (p == NULL)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        if (n + offset > 256)
                                n = 256 - offset;
                        if (n < 0)
@@ -201,7 +201,7 @@ static long pciread(struct chan *c, void *va, long n, int64_t offset)
                        }
                        return i;
                default:
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
        return n;
 }
@@ -222,7 +222,7 @@ static long pciwrite(struct chan *c, void *va, long n, int64_t offset)
                        tbdf = MKBUS(BusPCI, 0, 0, 0) | BUSBDF((uint32_t) c->qid.path);
                        p = pcimatchtbdf(tbdf);
                        if (p == NULL)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        if (offset > PCI_CONFIG_SZ)
                                return 0;
                        if (n + offset > PCI_CONFIG_SZ)
@@ -246,7 +246,7 @@ static long pciwrite(struct chan *c, void *va, long n, int64_t offset)
                        }
                        return i;
                default:
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
        return n;
 }
index b9050c7..e43f41d 100644 (file)
@@ -114,14 +114,14 @@ static struct chan *pipeattach(char *spec)
        c = devattach(devname(), spec);
        p = kzmalloc(sizeof(Pipe), 0);
        if (p == 0)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        if (waserror()) {
                freepipe(p);
                nexterror();
        }
        p->pipedir = kzmalloc(sizeof(pipedir), 0);
        if (p->pipedir == 0)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        memmove(p->pipedir, pipedir, sizeof(pipedir));
        kstrdup(&p->user, current->user);
        kref_init(&p->ref, pipe_release, 1);
@@ -129,10 +129,10 @@ static struct chan *pipeattach(char *spec)
 
        p->q[0] = qopen(pipealloc.pipeqsize, Qcoalesce, 0, 0);
        if (p->q[0] == 0)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        p->q[1] = qopen(pipealloc.pipeqsize, Qcoalesce, 0, 0);
        if (p->q[1] == 0)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        poperror();
 
        spin_lock(&(&pipealloc)->lock);
@@ -240,7 +240,7 @@ static int pipestat(struct chan *c, uint8_t * db, int n)
        }
        n = convD2M(&dir, db, n);
        if (n < BIT16SZ)
-               error(ENODATA, NULL);
+               error(ENODATA, ERROR_FIXME);
        return n;
 }
 
@@ -458,10 +458,10 @@ static int pipewstat(struct chan *c, uint8_t *dp, int n)
        int d1;
 
        if (c->qid.type & QTDIR)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        p = c->aux;
        if (strcmp(current->user, p->user) != 0)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        d = kzmalloc(sizeof(*d) + n, 0);
        if (waserror()) {
                kfree(d);
@@ -469,14 +469,14 @@ static int pipewstat(struct chan *c, uint8_t *dp, int n)
        }
        n = convM2D(dp, n, d, (char *)&d[1]);
        if (n == 0)
-               error(ENODATA, NULL);
+               error(ENODATA, ERROR_FIXME);
        d1 = NETTYPE(c->qid.path) == Qdata1;
        if (!emptystr(d->name)) {
                validwstatname(d->name);
                if (strlen(d->name) >= KNAMELEN)
-                       error(ENAMETOOLONG, NULL);
+                       error(ENAMETOOLONG, ERROR_FIXME);
                if (strncmp(p->pipedir[1 + !d1].name, d->name, KNAMELEN) == 0)
-                       error(EEXIST, NULL);
+                       error(EEXIST, ERROR_FIXME);
                strncpy(p->pipedir[1 + d1].name, d->name, KNAMELEN);
        }
        if (d->mode != ~0UL)
index b77c675..102545f 100644 (file)
@@ -401,7 +401,7 @@ static void nonone(struct proc *p)
                return;
        if (iseve())
                return;
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 #endif
 }
 
@@ -417,10 +417,10 @@ static struct chan *procopen(struct chan *c, int omode)
                return devopen(c, omode, 0, 0, procgen);
 
        if (QID(c->qid) == Qtrace) {
-               error(ENOSYS, NULL);
+               error(ENOSYS, ERROR_FIXME);
 #if 0
                if (omode != OREAD)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                lock(&tlock);
                if (waserror()) {
                        unlock(&tlock);
@@ -433,12 +433,12 @@ static struct chan *procopen(struct chan *c, int omode)
                        tevents = (Traceevent *) kzmalloc(sizeof(Traceevent) * Nevents,
                                                                                          KMALLOC_WAIT);
                        if (tevents == NULL)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        tpids = kzmalloc(Ntracedpids * 20, KMALLOC_WAIT);
                        if (tpids == NULL) {
                                kfree(tpids);
                                tpids = NULL;
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        }
                        tpidsc = tpids;
                        tpidse = tpids + Ntracedpids * 20;
@@ -456,10 +456,10 @@ static struct chan *procopen(struct chan *c, int omode)
 #endif
        }
        if (QID(c->qid) == Qtracepids) {
-               error(ENOSYS, NULL);
+               error(ENOSYS, ERROR_FIXME);
 #if 0
                if (omode != OREAD)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                c->mode = openmode(omode);
                c->flag |= COPEN;
                c->offset = 0;
@@ -467,7 +467,7 @@ static struct chan *procopen(struct chan *c, int omode)
 #endif
        }
        if ((p = pid2proc(SLOT(c->qid))) == NULL)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        //qlock(&p->debug);
        if (waserror()) {
                //qunlock(&p->debug);
@@ -476,16 +476,16 @@ static struct chan *procopen(struct chan *c, int omode)
        }
        pid = PID(c->qid);
        if (p->pid != pid)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        omode = openmode(omode);
 
        switch (QID(c->qid)) {
                case Qtext:
-                       error(ENOSYS, NULL);
+                       error(ENOSYS, ERROR_FIXME);
 /*
                        if (omode != OREAD)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        tc = proctext(c, p);
                        tc->offset = 0;
                        poperror();
@@ -499,17 +499,17 @@ static struct chan *procopen(struct chan *c, int omode)
                case Qprofile:
                case Qfd:
                        if (omode != O_READ)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        break;
 
                case Qnote:
 //          if (p->privatemem)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                        break;
 
                case Qmem:
 //          if (p->privatemem)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                        //nonone(p);
                        break;
 
@@ -526,7 +526,7 @@ static struct chan *procopen(struct chan *c, int omode)
 
                case Qns:
                        if (omode != O_READ)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        c->aux = kzmalloc(sizeof(struct mntwalk), KMALLOC_WAIT);
                        break;
                case Qstatus:
@@ -534,14 +534,14 @@ static struct chan *procopen(struct chan *c, int omode)
                case Qctl:
                        break;
                case Qnotepg:
-                       error(ENOSYS, NULL);
+                       error(ENOSYS, ERROR_FIXME);
 #if 0
                        nonone(p);
                        pg = p->pgrp;
                        if (pg == NULL)
-                               error(ESRCH, NULL);
+                               error(ESRCH, ERROR_FIXME);
                        if (omode != OWRITE || pg->pgrpid == 1)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        c->pgrpid.path = pg->pgrpid + 1;
                        c->pgrpid.vers = p->noteid;
 #endif
@@ -552,7 +552,7 @@ static struct chan *procopen(struct chan *c, int omode)
                        //qunlock(&p->debug);
                        kref_put(&p->p_kref);
                        printk("procopen %#llux\n", c->qid.path);
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
        }
 
        /* Affix pid to qid */
@@ -563,7 +563,7 @@ static struct chan *procopen(struct chan *c, int omode)
        /* TODO: think about what we really want here.  In akaros, we wouldn't have
         * our pid changed like that. */
        if (p->pid != pid)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        tc = devopen(c, omode, 0, 0, procgen);
        poperror();
@@ -575,19 +575,19 @@ static struct chan *procopen(struct chan *c, int omode)
 static int procwstat(struct chan *c, uint8_t * db, int n)
 {
        ERRSTACK(2);
-       error(ENOSYS, NULL);
+       error(ENOSYS, ERROR_FIXME);
 #if 0
        struct proc *p;
        struct dir *d;
 
        if (c->qid.type & QTDIR)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
 
        if (QID(c->qid) == Qtrace)
                return devwstat(c, db, n);
 
        if ((p = pid2proc(SLOT(c->qid))) == NULL)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        nonone(p);
        d = NULL;
        qlock(&p->debug);
@@ -599,18 +599,18 @@ static int procwstat(struct chan *c, uint8_t * db, int n)
        }
 
        if (p->pid != PID(c->qid))
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        if (strcmp(current->user, p->user) != 0 && strcmp(current->user, eve) != 0)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
 
        d = kzmalloc(sizeof(struct dir) + n, KMALLOC_WAIT);
        n = convM2D(db, n, &d[0], (char *)&d[1]);
        if (n == 0)
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
        if (!emptystr(d->uid) && strcmp(d->uid, p->user) != 0) {
                if (strcmp(current->user, eve) != 0)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                else
                        kstrdup(&p->user, d->uid);
        }
@@ -853,10 +853,10 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
                        return readstr(off, va, n, tpids);
 #endif
        if ((p = pid2proc(SLOT(c->qid))) == NULL)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        if (p->pid != PID(c->qid)) {
                kref_put(&p->p_kref);
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        }
        switch (QID(c->qid)) {
                default:
@@ -902,7 +902,7 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
 
                        if (!iseve()) {
                                kref_put(&p->p_kref);
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        }
 
                        /* validate kernel addresses */
@@ -925,7 +925,7 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
                                }
                        }
                        kref_put(&p->p_kref);
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
 
                case Qprofile:
                        s = p->seg[TSEG];
@@ -951,9 +951,9 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
                                nexterror();
                        }
                        if (p->pid != PID(c->qid))
-                               error(ESRCH, NULL);
+                               error(ESRCH, ERROR_FIXME);
                        if (n < 1)      /* must accept at least the '\0' */
-                               error(ENAMETOOLONG, NULL);
+                               error(ENAMETOOLONG, ERROR_FIXME);
                        if (p->nnote == 0)
                                n = 0;
                        else {
@@ -991,7 +991,7 @@ static long procread(struct chan *c, void *va, long n, int64_t off)
 regread:
                        if (rptr == 0) {
                                kref_put(&p->p_kref);
-                               error(ENODATA, NULL);
+                               error(ENODATA, ERROR_FIXME);
                        }
                        if (offset >= rsize) {
                                kref_put(&p->p_kref);
@@ -1092,7 +1092,7 @@ regread:
                case Qwait:
                        if (!canqlock(&p->qwaitr)) {
                                kref_put(&p->p_kref);
-                               error(EBUSY, NULL);
+                               error(EBUSY, ERROR_FIXME);
                        }
 
                        if (waserror()) {
@@ -1104,14 +1104,14 @@ regread:
                        lock(&p->exl);
                        if (up == p && p->nchild == 0 && p->waitq == 0) {
                                unlock(&p->exl);
-                               error(ECHILD, NULL);
+                               error(ECHILD, ERROR_FIXME);
                        }
                        pid = p->pid;
                        while (p->waitq == 0) {
                                unlock(&p->exl);
                                rendez_sleep(&p->waitr, haswaitq, p);
                                if (p->pid != pid)
-                                       error(ESRCH, NULL);
+                                       error(ESRCH, ERROR_FIXME);
                                lock(&p->exl);
                        }
                        wq = p->waitq;
@@ -1166,7 +1166,7 @@ regread:
                                nexterror();
                        }
                        if (p->pgrp == NULL || p->pid != PID(c->qid))
-                               error(ESRCH, NULL);
+                               error(ESRCH, ERROR_FIXME);
                        mw = c->aux;
                        if (mw->cddone) {
                                poperror();
@@ -1210,7 +1210,7 @@ regread:
 #endif
        }
 
-       error(EINVAL, NULL);
+       error(EINVAL, ERROR_FIXME);
        return 0;       /* not reached */
 }
 
@@ -1259,17 +1259,17 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
        uintptr_t offset;
 
        if (c->qid.type & QTDIR)
-               error(EISDIR, NULL);
+               error(EISDIR, ERROR_FIXME);
 
        if ((p = pid2proc(SLOT(c->qid))) == NULL)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        if (waserror()) {
                kref_put(&p->p_kref);
                nexterror();
        }
        if (p->pid != PID(c->qid))
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        offset = off;
 
@@ -1277,13 +1277,13 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
 #if 0
                case Qargs:
                        if (n == 0)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        if (n >= sizeof buf - strlen(p->text) - 1)
-                               error(E2BIG, NULL);
+                               error(E2BIG, ERROR_FIXME);
                        l = snprintf(buf, sizeof buf, "%s [%s]", p->text, (char *)va);
                        args = kzmalloc(l + 1, KMALLOC_WAIT);
                        if (args == NULL)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        memmove(args, buf, l);
                        args[l] = 0;
                        kfree(p->args);
@@ -1294,7 +1294,7 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
 
                case Qmem:
                        if (p->state != Stopped)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
 
                        n = procctlmemio(p, offset, n, va, 0);
                        break;
@@ -1305,7 +1305,7 @@ static long procwrite(struct chan *c, void *va, long n, int64_t off)
                        else if (offset + n > sizeof(Ureg))
                                n = sizeof(Ureg) - offset;
                        if (p->dbgreg == 0)
-                               error(ENODATA, NULL);
+                               error(ENODATA, ERROR_FIXME);
                        setregisters(p->dbgreg, (char *)(p->dbgreg) + offset, va, n);
                        break;
 
@@ -1360,15 +1360,15 @@ static struct chan *proctext(struct chan *c, struct proc *p)
 
        s = p->seg[TSEG];
        if (s == 0)
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
        if (p->state == Dead)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        lock(s);
        i = s->image;
        if (i == 0) {
                unlock(s);
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        }
        unlock(s);
 
@@ -1380,19 +1380,19 @@ static struct chan *proctext(struct chan *c, struct proc *p)
 
        tc = i->c;
        if (tc == 0)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 
        /* TODO: what do you want here?  you can't get a kref and have the new val
         * be 1.  Here is the old code: if (kref_get(&tc->ref, 1) == 1 || ... ) */
        if (kref_refcnt(&tc->ref, 1) == 1 || (tc->flag & COPEN) == 0
                || tc->mode != OREAD) {
                cclose(tc);
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        }
 
        if (p->pid != PID(c->qid)) {
                cclose(tc);
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
        }
 
        poperror();
@@ -1409,7 +1409,7 @@ void procstopwait(struct proc *p, int ctl)
        int pid;
 
        if (p->pdbg)
-               error(EBUSY, NULL);
+               error(EBUSY, ERROR_FIXME);
        if (procstopped(p) || p->state == Broken)
                return;
 
@@ -1428,7 +1428,7 @@ void procstopwait(struct proc *p, int ctl)
        poperror();
        qlock(&p->debug);
        if (p->pid != pid)
-               error(ESRCH, NULL);
+               error(ESRCH, ERROR_FIXME);
 }
 
 #endif
@@ -1541,7 +1541,7 @@ procctlmemio(struct proc *p, uintptr_t offset, int n, void *va, int read)
        for (;;) {
                s = seg(p, offset, 1);
                if (s == 0)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
 
                if (offset + n >= s->top)
                        n = s->top - offset;
index c84d60d..f52b6d4 100644 (file)
@@ -95,7 +95,7 @@ regressopen(struct chan *c, int omode)
 {
        if(c->qid.type & QTDIR){
                if(openmode(omode) != O_READ)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
        }
        c->mode = openmode(omode);
        c->flag |= COPEN;
@@ -170,7 +170,7 @@ regresswrite(struct chan *c, void *a, long n, int64_t unused)
                        n = -1;
                break;
        default:
-               error(EBADFD, NULL);
+               error(EBADFD, ERROR_FIXME);
        }
        kfree(cb);
        poperror();
index 32c361f..178213f 100644 (file)
@@ -230,7 +230,7 @@ static struct chan *rootattach(char *spec)
 {
        struct chan *c;
        if (*spec)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        c = devattach(devname(), spec);
        mkqid(&c->qid, roottab[0].qid.path, roottab[0].qid.vers, QTDIR);
        return c;
@@ -458,7 +458,7 @@ static int rootwstat(struct chan *c, uint8_t *m_buf, int m_buf_sz)
        m_sz = convM2D(m_buf, m_buf_sz, &dir[0], (char*)&dir[1]);
        if (!m_sz) {
                kfree(dir);
-               error(ENODATA, NULL);
+               error(ENODATA, ERROR_FIXME);
        }
        /* TODO: handle more things than just the mode */
        if (!emptystr(dir->name))
index 9fc0f0b..d20e782 100644 (file)
@@ -190,7 +190,7 @@ static struct chan *srvopen(struct chan *c, int omode)
        openmode(omode);        /* used as an error checker in plan9, does little now */
        if (c->qid.type & QTDIR) {
                if (omode & O_WRITE)
-                       error(EISDIR, NULL);
+                       error(EISDIR, ERROR_FIXME);
                c->mode = openmode(omode);
                c->flag |= COPEN;
                c->offset = 0;
@@ -208,13 +208,13 @@ static struct chan *srvopen(struct chan *c, int omode)
 #if 0
        if (omode & ORCLOSE) {
                if (strcmp(srv->user, up->env->user) != 0)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                else
                        srv->flags |= SORCLOSE;
        }
 #endif
        if ((srv->perm & DMEXCL) && atomic_read(&srv->opens))
-               error(EBUSY, NULL);
+               error(EBUSY, ERROR_FIXME);
        /* srv->chan is write-once, so we don't need to sync. */
        if (!srv->chan)
                error(EFAIL, "srv file has no chan yet");
@@ -251,7 +251,7 @@ static void srvcreate(struct chan *c, char *name, int omode, uint32_t perm)
 
 static int srvwstat(struct chan *c, uint8_t * dp, int n)
 {
-       error(ENOSYS, NULL);
+       error(ENOSYS, ERROR_FIXME);
        return -1;
 }
 
@@ -297,7 +297,7 @@ static long srvwrite(struct chan *c, void *va, long count, int64_t offset)
        int fd;
 
        if (c->qid.type & QTDIR)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        srv = c->aux;
        if (!grab_ref(srv))
                error(EFAIL, "Unable to write srv file, concurrent removal");
index 44e7bdd..01bc4a7 100644 (file)
@@ -78,7 +78,7 @@ static struct chan *ver_open(struct chan *c, int omode)
 {
        if (c->qid.type & QTDIR) {
                if (openmode(omode) != O_READ)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
        }
        c->mode = openmode(omode);
        c->flag |= COPEN;
@@ -121,7 +121,7 @@ static long ver_read(struct chan *c, void *va, long n, int64_t off)
                        return ver_emit_nlstr(va, build_info_version_name, n, (long) off);
                break;
        default:
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        }
 
        return 0;
@@ -129,7 +129,7 @@ static long ver_read(struct chan *c, void *va, long n, int64_t off)
 
 static long ver_write(struct chan *c, void *a, long n, int64_t unused)
 {
-       error(ENOTSUP, NULL);
+       error(ENOTSUP, ERROR_FIXME);
        return -1;
 }
 
index f149546..91fe064 100644 (file)
@@ -60,7 +60,7 @@ static long bnx2x_ifstat(struct ether *edev, void *a, long n, uint32_t offset)
        p = kzmalloc(READSTR, 0);
        if (p == NULL) {
                qunlock(&ctlr->slock);
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        }
        l = 0;
        for (i = 0; i < Nstatistics; i++) {
@@ -101,7 +101,7 @@ static long bnx2x_ctl(struct ether *edev, void *buf, long n)
        struct cmdtab *ct;
 
        if ((ctlr = edev->ctlr) == NULL)
-               error(ENODEV, NULL);
+               error(ENODEV, ERROR_FIXME);
        cb = parsecmd(buf, n);
        if (waserror()) {
                kfree(cb);
@@ -418,7 +418,7 @@ static void bnx2x_pci(void)
 
                ctlr = kzmalloc(sizeof(struct bnx2x), 0);
                if (ctlr == NULL)
-                       error(ENOMEM, NULL);
+                       error(ENOMEM, ERROR_FIXME);
 
                spinlock_init_irqsave(&ctlr->imlock);
                spinlock_init_irqsave(&ctlr->tlock);
index be650b8..8998b49 100644 (file)
@@ -513,7 +513,7 @@ rtl8169ifstat(struct ether* edev, void* a, long n, uint32_t offset)
                udelay(1000*1);
        }
        if(csr32r(ctlr, Dtccr) & Cmd)
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
        dtcc = ctlr->dtcc;
 
        edev->oerrs = dtcc->txer;
@@ -529,7 +529,7 @@ rtl8169ifstat(struct ether* edev, void* a, long n, uint32_t offset)
        }
 
        if((alloc = kzmalloc(READSTR, 0)) == NULL)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        e = alloc+READSTR;
 
        p = seprintf(alloc, e, "TxOk: %llu\n", dtcc->txok);
index cc3d49e..6ea05fa 100644 (file)
@@ -1362,7 +1362,7 @@ static void i82563attach(struct ether *edev)
                kzmalloc(ctlr->nrd * sizeof(Rd) + ctlr->ntd * sizeof(Td) + 255, 0);
        if (ctlr->alloc == NULL) {
                qunlock(&ctlr->alock);
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        }
        ctlr->rdba = (Rd *) ROUNDUP((uintptr_t) ctlr->alloc, 256);
        ctlr->tdba = (Td *) (ctlr->rdba + ctlr->nrd);
@@ -1693,7 +1693,7 @@ static long i82563ctl(struct ether *edev, void *buf, long n)
        struct cmdtab *ct;
 
        if ((ctlr = edev->ctlr) == NULL)
-               error(ENODEV, NULL);
+               error(ENODEV, ERROR_FIXME);
 
        cb = parsecmd(buf, n);
        if (waserror()) {
@@ -1706,14 +1706,14 @@ static long i82563ctl(struct ether *edev, void *buf, long n)
                case CMrdtr:
                        v = strtoul(cb->f[1], &p, 0);
                        if (*p || v > 0xffff)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        ctlr->rdtr = v;
                        csr32w(ctlr, Rdtr, v);
                        break;
                case CMradv:
                        v = strtoul(cb->f[1], &p, 0);
                        if (*p || v > 0xffff)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        ctlr->radv = v;
                        csr32w(ctlr, Radv, v);
                        break;
index 5346d99..7c0a159 100644 (file)
@@ -639,7 +639,7 @@ igbeifstat(struct ether* edev, void* a, long n, uint32_t offset)
        p = kzmalloc(READSTR, 0);
        if(p == NULL) {
                qunlock(&ctlr->slock);
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        }
        l = 0;
        for(i = 0; i < Nstatistics; i++){
@@ -730,7 +730,7 @@ igbectl(struct ether* edev, void* buf, long n)
        struct cmdtab *ct;
 
        if((ctlr = edev->ctlr) == NULL)
-               error(ENODEV, NULL);
+               error(ENODEV, ERROR_FIXME);
 
        cb = parsecmd(buf, n);
        if(waserror()){
@@ -743,7 +743,7 @@ igbectl(struct ether* edev, void* buf, long n)
        case CMrdtr:
                v = strtol(cb->f[1], &p, 0);
                if(v < 0 || p == cb->f[1] || v > 0xFFFF)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                ctlr->rdtr = v;
                csr32w(ctlr, Rdtr, Fpd|v);
                break;
@@ -1245,7 +1245,7 @@ igbeattach(struct ether* edev)
        ctlr->alloc = kzmalloc(ctlr->nrd * sizeof(Rd) + ctlr->ntd * sizeof(Td) + 127, 0);
        if(ctlr->alloc == NULL) {
                printd("igbe: can't allocate ctlr->alloc\n");
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        }
        ctlr->rdba = (Rd*)ROUNDUP((uintptr_t)ctlr->alloc, 128);
        ctlr->tdba = (Td*)(ctlr->rdba+ctlr->nrd);
@@ -1254,7 +1254,7 @@ igbeattach(struct ether* edev)
        ctlr->tb = kzmalloc(ctlr->ntd * sizeof(struct block *), 0);
        if (ctlr->rb == NULL || ctlr->tb == NULL) {
                printd("igbe: can't allocate ctlr->rb or ctlr->tb\n");
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        }
 
        /* the ktasks should free these names, if they ever exit */
@@ -1997,7 +1997,7 @@ igbepci(void)
                ctlr = kzmalloc(sizeof(struct ctlr), 0);
                if(ctlr == NULL) {
                        vunmap_vmem((uintptr_t)mem, pcidev->bar[0].mmio_sz);
-                       error(ENOMEM, NULL);
+                       error(ENOMEM, ERROR_FIXME);
                }
                spinlock_init_irqsave(&ctlr->imlock);
                spinlock_init_irqsave(&ctlr->tlock);
index f9ce667..6b10c40 100644 (file)
@@ -19,6 +19,8 @@
                                                                         prev_errbuf)->jmpbuf), 1)
 #define poperror() errpop(errstack, ARRAY_SIZE(errstack), &curindex,   \
                                                  prev_errbuf)
+/* Give Akaros people a hint that we need a real error message. */
+#define ERROR_FIXME "This space in %s@%d needs filling in.", __FILE__, __LINE__
 
 struct errbuf *errpush(struct errbuf *errstack, int stacksize, int *curindex,
                                                struct errbuf **prev_errbuf);
index 8505edf..5bd4432 100644 (file)
@@ -449,7 +449,7 @@ int arpwrite(struct Fs *fs, char *s, long len)
        arp = fs->arp;
 
        if (len <= 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        if (len > sizeof(buf))
                len = sizeof(buf);
        strlcpy(buf, s, sizeof(buf));
@@ -480,7 +480,7 @@ int arpwrite(struct Fs *fs, char *s, long len)
        } else if (strcmp(f[0], "add") == 0) {
                switch (n) {
                        default:
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        case 3:
                                parseip(ip, f[1]);
                                if (isv4(ip))
@@ -495,19 +495,19 @@ int arpwrite(struct Fs *fs, char *s, long len)
                        case 4:
                                m = ipfindmedium(f[1]);
                                if (m == NULL)
-                                       error(EINVAL, NULL);
+                                       error(EINVAL, ERROR_FIXME);
                                parseip(ip, f[2]);
                                n = parsemac(mac, f[3], m->maclen);
                                break;
                }
 
                if (m->ares == NULL)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
 
                m->ares(fs, V6, ip, mac, n, 0);
        } else if (strcmp(f[0], "del") == 0) {
                if (n != 2)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
 
                parseip(ip, f[1]);
                qlock(&arp->qlock);
@@ -542,7 +542,7 @@ int arpwrite(struct Fs *fs, char *s, long len)
                }
                qunlock(&arp->qlock);
        } else
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        return len;
 }
index b95c0ba..32946f0 100644 (file)
@@ -414,7 +414,7 @@ static struct chan *ipopen(struct chan *c, int omode)
                        break;
                case Qndb:
                        if (omode & (O_WRITE | O_TRUNC) && !iseve())
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        if ((omode & (O_WRITE | O_TRUNC)) == (O_WRITE | O_TRUNC))
                                f->ndb[0] = 0;
                        break;
@@ -436,15 +436,15 @@ static struct chan *ipopen(struct chan *c, int omode)
                case Qbootp:
                case Qipselftab:
                        if (omode & O_WRITE)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        break;
                case Qsnoop:
                        if (omode & O_WRITE)
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        p = f->p[PROTO(c->qid)];
                        cv = p->conv[CONV(c->qid)];
                        if (strcmp(ATTACHER(c), cv->owner) != 0 && !iseve())
-                               error(EPERM, NULL);
+                               error(EPERM, ERROR_FIXME);
                        atomic_inc(&cv->snoopers);
                        break;
                case Qclone:
@@ -458,7 +458,7 @@ static struct chan *ipopen(struct chan *c, int omode)
                        qunlock(&p->qlock);
                        poperror();
                        if (cv == NULL) {
-                               error(ENODEV, NULL);
+                               error(ENODEV, ERROR_FIXME);
                                break;
                        }
                        /* we only honor nonblock on a clone */
@@ -480,9 +480,9 @@ static struct chan *ipopen(struct chan *c, int omode)
                        }
                        if ((perm & (cv->perm >> 6)) != perm) {
                                if (strcmp(ATTACHER(c), cv->owner) != 0)
-                                       error(EPERM, NULL);
+                                       error(EPERM, ERROR_FIXME);
                                if ((perm & cv->perm) != perm)
-                                       error(EPERM, NULL);
+                                       error(EPERM, ERROR_FIXME);
 
                        }
                        cv->inuse++;
@@ -514,9 +514,9 @@ static struct chan *ipopen(struct chan *c, int omode)
                        }
                        if ((perm & (cv->perm >> 6)) != perm) {
                                if (strcmp(ATTACHER(c), cv->owner) != 0)
-                                       error(EPERM, NULL);
+                                       error(EPERM, ERROR_FIXME);
                                if ((perm & cv->perm) != perm)
-                                       error(EPERM, NULL);
+                                       error(EPERM, ERROR_FIXME);
 
                        }
 
@@ -589,7 +589,7 @@ static int ipwstat(struct chan *c, uint8_t * dp, int n)
        f = ipfs[c->dev];
        switch (TYPE(c->qid)) {
                default:
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                        break;
                case Qctl:
                case Qdata:
@@ -603,11 +603,11 @@ static int ipwstat(struct chan *c, uint8_t * dp, int n)
        }
        n = convM2D(dp, n, d, (char *)&d[1]);
        if (n == 0)
-               error(ENODATA, NULL);
+               error(ENODATA, ERROR_FIXME);
        p = f->p[PROTO(c->qid)];
        cv = p->conv[CONV(c->qid)];
        if (!iseve() && strcmp(ATTACHER(c), cv->owner) != 0)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        if (!emptystr(d->uid))
                kstrdup(&cv->owner, d->uid);
        if (d->mode != ~0UL)
@@ -748,7 +748,7 @@ static long ipread(struct chan *ch, void *a, long n, int64_t off)
        p = a;
        switch (TYPE(ch->qid)) {
                default:
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                case Qtopdir:
                case Qprotodir:
                case Qconvdir:
@@ -980,7 +980,7 @@ static char *setladdrport(struct conv *c, char *str, int announcing)
        /* one process can get all connections */
        if (announcing && strcmp(p, "*") == 0) {
                if (!iseve())
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                return setluniqueport(c, 0);
        }
 
@@ -1060,7 +1060,7 @@ static void connectctlmsg(struct Proto *x, struct conv *c, struct cmdbuf *cb)
        char *p;
 
        if (c->state != 0)
-               error(EBUSY, NULL);
+               error(EBUSY, ERROR_FIXME);
        c->state = Connecting;
        c->cerr[0] = '\0';
        if (x->connect == NULL)
@@ -1111,7 +1111,7 @@ static void announcectlmsg(struct Proto *x, struct conv *c, struct cmdbuf *cb)
        char *p;
 
        if (c->state != 0)
-               error(EBUSY, NULL);
+               error(EBUSY, ERROR_FIXME);
        c->state = Announcing;
        c->cerr[0] = '\0';
        if (x->announce == NULL)
@@ -1212,7 +1212,7 @@ static long ipwrite(struct chan *ch, void *v, long n, int64_t off)
 
        switch (TYPE(ch->qid)) {
                default:
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
                case Qdata:
                        x = f->p[PROTO(ch->qid)];
                        c = x->conv[CONV(ch->qid)];
@@ -1506,7 +1506,7 @@ retry:
                if (c == NULL) {
                        c = kzmalloc(sizeof(struct conv), 0);
                        if (c == NULL)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        qlock_init(&c->qlock);
                        qlock_init(&c->listenq);
                        rendez_init(&c->cr);
@@ -1521,7 +1521,7 @@ retry:
                                c->ptcl = kzmalloc(p->ptclsize, 0);
                                if (c->ptcl == NULL) {
                                        kfree(c);
-                                       error(ENOMEM, NULL);
+                                       error(ENOMEM, ERROR_FIXME);
                                }
                        }
                        *pp = c;
@@ -1658,9 +1658,9 @@ struct conv *Fsnewcall(struct conv *c, uint8_t * raddr, uint16_t rport,
 static long ndbwrite(struct Fs *f, char *a, uint32_t off, int n)
 {
        if (off > strlen(f->ndb))
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
        if (off + n >= sizeof(f->ndb) - 1)
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
        memmove(f->ndb + off, a, n);
        f->ndb[off + n] = 0;
        f->ndbvers++;
index f7bb15f..942d88d 100644 (file)
@@ -180,7 +180,7 @@ static void etherbind(struct Ipifc *ifc, int argc, char **argv)
        Etherrock *er;
 
        if (argc < 2)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        addr = kmalloc(Maxpath, KMALLOC_WAIT);  //char addr[2*KNAMELEN];
        dir = kmalloc(Maxpath, KMALLOC_WAIT);   //char addr[2*KNAMELEN];
@@ -236,12 +236,12 @@ static void etherbind(struct Ipifc *ifc, int argc, char **argv)
        n = sysread(fd, buf, 511);
        sysclose(fd);
        if (n <= 0)
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
        buf[n] = 0;
 
        ptr = strstr(buf, "addr: ");
        if (!ptr)
-               error(EIO, NULL);
+               error(EIO, ERROR_FIXME);
        ptr += 6;
        parsemac(ifc->mac, ptr, 6);
 
index c5520a6..0e375fb 100644 (file)
@@ -839,7 +839,7 @@ long routewrite(struct Fs *f, struct chan *c, char *p, int n)
                        }
        } else if (strcmp(cb->f[0], "remove") == 0) {
                if (cb->nf < 3)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                parseip(addr, cb->f[1]);
                parseipmask(mask, cb->f[2]);
                if (memcmp(addr, v4prefix, IPv4off) == 0)
@@ -848,7 +848,7 @@ long routewrite(struct Fs *f, struct chan *c, char *p, int n)
                        v6delroute(f, addr, mask, 1);
        } else if (strcmp(cb->f[0], "add") == 0) {
                if (cb->nf < 4)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                parseip(addr, cb->f[1]);
                parseipmask(mask, cb->f[2]);
                parseip(gate, cb->f[3]);
@@ -864,7 +864,7 @@ long routewrite(struct Fs *f, struct chan *c, char *p, int n)
                        v6addroute(f, tag, addr, mask, gate, 0);
        } else if (strcmp(cb->f[0], "tag") == 0) {
                if (cb->nf < 2)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
 
                a = c->aux;
                na = newipaux(a->owner, cb->f[1]);
index e4d0ceb..e46df7a 100644 (file)
@@ -230,7 +230,7 @@ struct chan *netifopen(struct ether *nif, struct chan *c, int omode)
        id = 0;
        if (c->qid.type & QTDIR) {
                if (omode & O_WRITE)
-                       error(EPERM, NULL);
+                       error(EPERM, ERROR_FIXME);
        } else {
                switch (NETTYPE(c->qid.path)) {
                        case Ndataqid:
@@ -244,14 +244,14 @@ struct chan *netifopen(struct ether *nif, struct chan *c, int omode)
                                break;
                        default:
                                if (omode & O_WRITE)
-                                       error(EINVAL, NULL);
+                                       error(EINVAL, ERROR_FIXME);
                }
                switch (NETTYPE(c->qid.path)) {
                        case Ndataqid:
                        case Nctlqid:
                                f = nif->f[id];
                                if (netown(f, current->user, omode & 7) < 0)
-                                       error(EPERM, NULL);
+                                       error(EPERM, ERROR_FIXME);
                                break;
                }
        }
@@ -336,7 +336,7 @@ netifread(struct ether *nif, struct chan *c, void *a, long n,
                case Nifstatqid:
                        return 0;
        }
-       error(EINVAL, NULL);
+       error(EINVAL, ERROR_FIXME);
        return -1;      /* not reached */
 }
 
@@ -382,7 +382,7 @@ long netifwrite(struct ether *nif, struct chan *c, void *a, long n)
        uint8_t binaddr[Nmaxaddr];
 
        if (NETTYPE(c->qid.path) != Nctlqid)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
 
        if (n >= sizeof(buf))
                n = sizeof(buf) - 1;
@@ -399,7 +399,7 @@ long netifwrite(struct ether *nif, struct chan *c, void *a, long n)
        if ((p = matchtoken(buf, "connect")) != 0) {
                type = strtol(p, 0, 0); /* allows any base, though usually hex */
                if (typeinuse(nif, type))
-                       error(EBUSY, NULL);
+                       error(EBUSY, ERROR_FIXME);
                f->type = type;
                if (f->type < 0)
                        nif->all++;
@@ -452,16 +452,16 @@ int netifwstat(struct ether *nif, struct chan *c, uint8_t * db, int n)
 
        f = nif->f[NETID(c->qid.path)];
        if (f == 0)
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
 
        if (netown(f, current->user, O_WRITE) < 0)
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
 
        dir = kzmalloc(sizeof(struct dir) + n, 0);
        m = convM2D(db, n, &dir[0], (char *)&dir[1]);
        if (m == 0) {
                kfree(dir);
-               error(ENODATA, NULL);
+               error(ENODATA, ERROR_FIXME);
        }
        if (!emptystr(dir[0].uid))
                strlcpy(f->owner, dir[0].uid, KNAMELEN);
@@ -575,7 +575,7 @@ static int openfile(struct ether *nif, int id)
        if (id >= 0) {
                f = nif->f[id];
                if (f == 0)
-                       error(ENODEV, NULL);
+                       error(ENODEV, ERROR_FIXME);
                qlock(&f->qlock);
                qreopen(f->in);
                f->inuse++;
@@ -619,7 +619,7 @@ static int openfile(struct ether *nif, int id)
                poperror();
                return fp - nif->f;
        }
-       error(ENODEV, NULL);
+       error(ENODEV, ERROR_FIXME);
        return -1;      /* not reached */
 }
 
index 5342483..2f24b23 100644 (file)
@@ -210,7 +210,7 @@ void netlogctl(struct Fs *f, char *s, int n)
        }
 
        if (cb->nf < 2)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        ct = lookupcmd(cb, routecmd, ARRAY_SIZE(routecmd));
 
index ca2c965..40802cd 100644 (file)
@@ -406,7 +406,7 @@ int cmount(struct chan *new, struct chan *old, int flag, char *spec)
        struct mount *nm, *f, *um, **h;
 
        if (QTDIR & (old->qid.type ^ new->qid.type))
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        if (old->umh)
                printd("cmount old extra umh\n");
@@ -414,7 +414,7 @@ int cmount(struct chan *new, struct chan *old, int flag, char *spec)
        order = flag & MORDER;
 
        if ((old->qid.type & QTDIR) == 0 && order != MREPL)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        mh = new->umh;
 
@@ -436,7 +436,7 @@ int cmount(struct chan *new, struct chan *old, int flag, char *spec)
         */
        if ((flag & MCREATE) && mh && mh->mount
                && (mh->mount->next || !(mh->mount->mflag & MCREATE)))
-               error(EEXIST, NULL);
+               error(EEXIST, ERROR_FIXME);
 
        pg = current->pgrp;
        wlock(&pg->ns);
@@ -539,7 +539,7 @@ void cunmount(struct chan *mnt, struct chan *mounted)
 
        if (m == 0) {
                wunlock(&pg->ns);
-               error(ENOENT, NULL);
+               error(ENOENT, ERROR_FIXME);
        }
 
        wlock(&m->lock);
@@ -578,7 +578,7 @@ void cunmount(struct chan *mnt, struct chan *mounted)
        }
        wunlock(&m->lock);
        wunlock(&pg->ns);
-       error(ENOENT, NULL);
+       error(ENOENT, ERROR_FIXME);
 }
 
 struct chan *cclone(struct chan *c)
@@ -720,7 +720,7 @@ int walk(struct chan **cp, char **names, int nnames, bool can_mount, int *nerror
                                *nerror = nhave;
                        cnameclose(cname);
                        cclose(c);
-                       set_error(ENOTDIR, NULL);
+                       set_error(ENOTDIR, ERROR_FIXME);
                        if (mh != NULL)
                                putmhead(mh);
                        return -1;
@@ -871,7 +871,7 @@ struct chan *createdir(struct chan *c, struct mhead *m)
                        return nc;
                }
        }
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
        poperror();
        return 0;
 }
@@ -1039,7 +1039,7 @@ static struct chan *__namec_from(struct chan *c, char *aname, int amode,
 
                /* don't try to walk the last path element just yet. */
                if (e.ARRAY_SIZEs == 0)
-                       error(EEXIST, NULL);
+                       error(EEXIST, ERROR_FIXME);
                e.ARRAY_SIZEs--;
        }
 
@@ -1157,7 +1157,7 @@ Open:
                         * so one may mount on / or . and see the effect.
                         */
                        if (!(c->qid.type & QTDIR))
-                               error(ENOTDIR, NULL);
+                               error(ENOTDIR, ERROR_FIXME);
                        break;
 
                case Amount:
@@ -1184,7 +1184,7 @@ Open:
                        e.ARRAY_SIZEs++;
                        if (walk(&c, e.elems + e.ARRAY_SIZEs - 1, 1, can_mount, NULL) == 0) {
                                if (omode & O_EXCL)
-                                       error(EEXIST, NULL);
+                                       error(EEXIST, ERROR_FIXME);
                                omode |= O_TRUNC;
                                goto Open;
                        }
@@ -1339,7 +1339,7 @@ struct chan *namec(char *name, int amode, int omode, uint32_t perm)
                        name++; /* drop the # */
                        while ((*name != '\0') && (*name != '/')) {
                                if (n >= GENBUF_SZ - 1)
-                                       error(ENAMETOOLONG, NULL);
+                                       error(ENAMETOOLONG, ERROR_FIXME);
                                devname[n++] = *name++;
                        }
                        devname[n] = '\0';
@@ -1353,7 +1353,7 @@ struct chan *namec(char *name, int amode, int omode, uint32_t perm)
                                devspec = &devname[n];
                        }
                        if (!strcmp(devname, "mnt"))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        /* TODO: deal with this "nodevs" business. */
                        #if 0
                        /*
@@ -1369,7 +1369,7 @@ struct chan *namec(char *name, int amode, int omode, uint32_t perm)
                                ((strchr("|esDa", get_cur_genbuf()[1]) == NULL)
                                 || (get_cur_genbuf()[1] == 's' // || r == 's'
                                         && get_cur_genbuf()[n] != '\0')))
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        #endif
                        devtype = devno(devname, 1);
                        if (devtype == -1)
@@ -1463,7 +1463,7 @@ void isdir(struct chan *c)
 {
        if (c->qid.type & QTDIR)
                return;
-       error(ENOTDIR, NULL);
+       error(ENOTDIR, ERROR_FIXME);
 }
 
 /*
index d3dd55d..d6d4754 100644 (file)
@@ -219,7 +219,7 @@ struct walkqid *devwalk(struct chan *c,
        for (j = 0; j < nname; j++) {
                if (!(nc->qid.type & QTDIR)) {
                        if (j == 0)
-                               error(ENOTDIR, NULL);
+                               error(ENOTDIR, ERROR_FIXME);
                        goto Done;
                }
                n = name[j];
@@ -251,8 +251,8 @@ Accept:
                                                   c->qid.path);
 Notfound:
                                        if (j == 0)
-                                               error(ENOENT, NULL);
-                                       set_error(ENOENT, NULL);
+                                               error(ENOENT, ERROR_FIXME);
+                                       set_error(ENOENT, ERROR_FIXME);
                                        goto Done;
                                case 0:
                                        printd("DEVWALK continue, i was %d\n", i);
@@ -312,12 +312,12 @@ devstat(struct chan *c, uint8_t * db, int n,
                                        devdir(c, c->qid, elem, 0, eve, DMDIR | 0555, &dir);
                                        n = convD2M(&dir, db, n);
                                        if (n == 0)
-                                               error(EINVAL, NULL);
+                                               error(EINVAL, ERROR_FIXME);
                                        return n;
                                }
                                printd("DEVSTAT fails:%s %llu\n", devtab[c->type].name,
                                           c->qid.path);
-                               error(ENOENT, NULL);
+                               error(ENOENT, ERROR_FIXME);
                        case 0:
                                printd("DEVSTAT got 0\n");
                                break;
@@ -329,7 +329,7 @@ devstat(struct chan *c, uint8_t * db, int n,
                                                dir.mode |= DMMOUNT;
                                        n = convD2M(&dir, db, n);
                                        if (n == 0)
-                                               error(EINVAL, NULL);
+                                               error(EINVAL, ERROR_FIXME);
                                        return n;
                                }
                                break;
@@ -362,7 +362,7 @@ devdirread(struct chan *c, char *d, long n,
                                dsz = convD2M(&dir[0], (uint8_t *) d, n - m);
                                if (dsz <= BIT16SZ) {   /* <= not < because this isn't stat; read is stuck */
                                        if (m == 0)
-                                               error(ENODATA, NULL);
+                                               error(ENODATA, ERROR_FIXME);
                                        return m;
                                }
                                m += dsz;
@@ -375,7 +375,7 @@ devdirread(struct chan *c, char *d, long n,
 }
 
 /*
- * error(EPERM, NULL) if open permission not granted for up->env->user.
+ * error(EPERM, ERROR_FIXME) if open permission not granted for up->env->user.
  */
 void devpermcheck(char *fileuid, uint32_t perm, int omode)
 {
@@ -429,7 +429,7 @@ Return:
 void
 devcreate(struct chan *c, char *unused_char_p_t, int unused_int, uint32_t u)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 struct block *devbread(struct chan *c, long n, uint32_t offset)
@@ -439,7 +439,7 @@ struct block *devbread(struct chan *c, long n, uint32_t offset)
 
        bp = allocb(n);
        if (bp == 0)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        if (waserror()) {
                freeb(bp);
                nexterror();
@@ -467,24 +467,24 @@ long devbwrite(struct chan *c, struct block *bp, uint32_t offset)
 
 void devremove(struct chan *c)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 int devwstat(struct chan *c, uint8_t * unused_uint8_p_t, int i)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
        return 0;
 }
 
 void devpower(int i)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
 }
 
 #if 0
 int devconfig(int unused_int, char *c, DevConf *)
 {
-       error(EPERM, NULL);
+       error(EPERM, ERROR_FIXME);
        return 0;
 }
 #endif
@@ -503,7 +503,7 @@ void validwstatname(char *name)
 {
        validname(name, 0);
        if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 }
 
 struct dev *devbyname(char *name)
index 7f1c5ab..c1fd810 100644 (file)
@@ -60,7 +60,7 @@ struct dev *devtabget(const char *name, int user)
                return &devtab[i];
 
        printk("devtabget FAILED %s\n", name);
-       error(ENOENT, NULL);
+       error(ENOENT, ERROR_FIXME);
 }
 
 long devtabread(struct chan *c, void *buf, long n, int64_t off)
@@ -73,7 +73,7 @@ long devtabread(struct chan *c, void *buf, long n, int64_t off)
 
        alloc = kzmalloc(READSTR, KMALLOC_WAIT);
        if (alloc == NULL)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
 
        p = alloc;
        e = p + READSTR;
index a52406c..9837ac9 100644 (file)
@@ -137,7 +137,7 @@ void pgrpcpy(struct pgrp *to, struct pgrp *from)
                        }
                        mh = newmhead(f->from);
                        if (!mh)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        *l = mh;
                        l = &mh->hash;
                        link = &mh->mount;
index 9843cc3..11f3639 100644 (file)
@@ -67,12 +67,12 @@ struct chan *fdtochan(struct fd_table *fdt, int fd, int mode, int chkmnt,
        if (!c) {
                /* We lost the info about why there was a problem (we used to track file
                 * group closed too, can add that in later). */
-               error(EBADF, NULL);
+               error(EBADF, ERROR_FIXME);
        }
        if (chkmnt && (c->flag & CMSG)) {
                if (iref)
                        cclose(c);
-               error(EBADF, NULL);
+               error(EBADF, ERROR_FIXME);
        }
        if (mode < 0)
                return c;
@@ -124,10 +124,10 @@ int openmode(uint32_t omode)
         * Note that we no longer convert OEXEC/O_EXEC to O_READ, and instead return
         * just the O_ACCMODE bits. */
        if (o >= (OTRUNC | OCEXEC | ORCLOSE | OEXEC))
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        o &= ~(OTRUNC | OCEXEC | ORCLOSE);
        if (o > OEXEC)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        if (o == OEXEC)
                return OREAD;
        return o;
@@ -200,7 +200,7 @@ int syscreate(char *path, int mode, uint32_t perm)
        }
        fd = newfd(c, mode);    /* 9ns mode is the O_FLAGS and perm is glibc mode */
        if (fd < 0)
-               error(-fd, NULL);
+               error(-fd, ERROR_FIXME);
        poperror();
 
        poperror();
@@ -220,12 +220,12 @@ int sysdup(int old)
        c = fdtochan(&current->open_files, old, -1, 0, 1);
        if (c->qid.type & QTAUTH) {
                cclose(c);
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        }
        fd = newfd(c, 0);
        if (fd < 0) {
                cclose(c);
-               error(-fd, NULL);
+               error(-fd, ERROR_FIXME);
        }
        poperror();
        return fd;
@@ -247,7 +247,7 @@ int sys_dup_to(struct proc *from_proc, unsigned int from_fd,
        c = fdtochan(&from_proc->open_files, from_fd, -1, 0, 1);
        if (c->qid.type & QTAUTH) {
                cclose(c);
-               error(EPERM, NULL);
+               error(EPERM, ERROR_FIXME);
        }
        ret = insert_obj_fdt(&to_proc->open_files, c, to_fd, 0, TRUE, FALSE);
        /* drop the ref from fdtochan.  if insert succeeded, there is one other ref
@@ -275,7 +275,7 @@ char *sysfd2path(int fd)
                s = kzmalloc(c->name->len + 1, 0);
                if (s == NULL) {
                        cclose(c);
-                       error(ENOMEM, NULL);
+                       error(ENOMEM, ERROR_FIXME);
                }
                memmove(s, c->name->s, c->name->len + 1);
        }
@@ -314,7 +314,7 @@ int sysfauth(int fd, char *aname)
 
        fd = newfd(ac, 0);
        if (fd < 0)
-               error(-fd, NULL);
+               error(-fd, ERROR_FIXME);
        poperror();     /* ac */
 
        poperror();
@@ -335,7 +335,7 @@ int sysfversion(int fd, unsigned int msize, char *vers, unsigned int arglen)
 
        /* check there's a NUL in the version string */
        if (arglen == 0 || memchr(vers, 0, arglen) == 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        c = fdtochan(&current->open_files, fd, O_RDWR, 0, 1);
        if (waserror()) {
@@ -383,17 +383,17 @@ int syspipe(int fd[2])
        c[0] = namec("#pipe", Atodir, 0, 0);
        c[1] = cclone(c[0]);
        if (walk(&c[0], &names[0], 1, FALSE, NULL) < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        if (walk(&c[1], &names[1], 1, FALSE, NULL) < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        c[0] = d->open(c[0], O_RDWR);
        c[1] = d->open(c[1], O_RDWR);
        fd[0] = newfd(c[0], 0);
        if (fd[0] < 0)
-               error(-fd[0], NULL);
+               error(-fd[0], ERROR_FIXME);
        fd[1] = newfd(c[1], 0);
        if (fd[1] < 0)
-               error(-fd[1], NULL);
+               error(-fd[1], ERROR_FIXME);
        poperror();
        return 0;
 }
@@ -429,7 +429,7 @@ long bindmount(struct chan *c, char *old, int flag, char *spec)
        struct chan *c1;
 
        if (flag > MMASK || (flag & MORDER) == (MBEFORE | MAFTER))
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        c1 = namec(old, Amount, 0, 0);
        if (waserror()) {
@@ -571,7 +571,7 @@ int sysopenat(int fromfd, char *path, int vfs_flags)
        }
        fd = newfd(c, vfs_flags);
        if (fd < 0)
-               error(-fd, NULL);
+               error(-fd, ERROR_FIXME);
        poperror();
        return fd;
 }
@@ -673,7 +673,7 @@ static long rread(int fd, void *va, long n, int64_t * offp)
        }
 
        if (n < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        dir = c->qid.type & QTDIR;
 
@@ -717,7 +717,7 @@ static long rread(int fd, void *va, long n, int64_t * offp)
                } else
                        off = *offp;
                if (off < 0)
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                if (off == 0) {
                        if (offp == NULL) {
                                spin_lock(&c->lock);
@@ -843,16 +843,16 @@ int64_t sysseek(int fd, int64_t off, int whence)
        /* TODO: WTF is this?  Is pipe magically the only device that isn't
         * seekable? */
        if (!strcmp(devtab[c->type].name, "pipe"))
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        switch (whence) {
                case 0:
                        if (c->qid.type & QTDIR) {
                                if (off != 0)
-                                       error(EISDIR, NULL);
+                                       error(EISDIR, ERROR_FIXME);
                                unionrewind(c);
                        } else if (off < 0)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        spin_lock(&c->lock);    /* lock for int64_t assignment */
                        c->offset = off;
                        spin_unlock(&c->lock);
@@ -860,12 +860,12 @@ int64_t sysseek(int fd, int64_t off, int whence)
 
                case 1:
                        if (c->qid.type & QTDIR)
-                               error(EISDIR, NULL);
+                               error(EISDIR, ERROR_FIXME);
                        spin_lock(&c->lock);    /* lock for read/write update */
                        off += c->offset;
                        if (off < 0) {
                                spin_unlock(&c->lock);
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        }
                        c->offset = off;
                        spin_unlock(&c->lock);
@@ -873,21 +873,21 @@ int64_t sysseek(int fd, int64_t off, int whence)
 
                case 2:
                        if (c->qid.type & QTDIR)
-                               error(EISDIR, NULL);
+                               error(EISDIR, ERROR_FIXME);
                        dir = chandirstat(c);
                        if (dir == NULL)
                                error(EFAIL, "internal error: stat error in seek");
                        off += dir->length;
                        kfree(dir);
                        if (off < 0)
-                               error(EINVAL, NULL);
+                               error(EINVAL, ERROR_FIXME);
                        spin_lock(&c->lock);    /* lock for read/write update */
                        c->offset = off;
                        spin_unlock(&c->lock);
                        break;
 
                default:
-                       error(EINVAL, NULL);
+                       error(EINVAL, ERROR_FIXME);
                        break;
        }
        poperror();
@@ -904,7 +904,7 @@ void validstat(uint8_t * s, int n, int slashok)
        char buf[64];
 
        if (statcheck(s, n) < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        /* verify that name entry is acceptable */
        s += STATFIXLEN - 4 * BIT16SZ;  /* location of first string */
        /*
@@ -1021,10 +1021,10 @@ static long rwrite(int fd, void *va, long n, int64_t * offp)
                nexterror();
        }
        if (c->qid.type & QTDIR)
-               error(EISDIR, NULL);
+               error(EISDIR, ERROR_FIXME);
 
        if (n < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
 
        if (offp == NULL) {
                /* append changes the offset to the end, and even if we fail later, this
@@ -1054,7 +1054,7 @@ static long rwrite(int fd, void *va, long n, int64_t * offp)
                nexterror();
        }
        if (off < 0)
-               error(EINVAL, NULL);
+               error(EINVAL, ERROR_FIXME);
        m = devtab[c->type].write(c, va, n, off);
        poperror();
 
@@ -1244,7 +1244,7 @@ static long dirpackage(uint8_t * buf, long ts, struct kdirent **d)
 
        *d = kzmalloc(n * sizeof(**d) + ss, 0);
        if (*d == NULL)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
 
        /*
         * then convert all buffers
@@ -1278,7 +1278,7 @@ long sysdirread(int fd, struct kdirent **d)
        }
        buf = kzmalloc(DIRREADLIM, 0);
        if (buf == NULL)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        if (waserror()) {
                kfree(buf);
                nexterror();
index 9e55457..9c727f7 100644 (file)
@@ -209,7 +209,7 @@ void *get_cont_pages(size_t order, int flags)
        if( first == -1 ) {
                spin_unlock_irqsave(&colored_page_free_list_lock);
                if (flags & KMALLOC_ERROR)
-                       error(ENOMEM, NULL);
+                       error(ENOMEM, ERROR_FIXME);
                return NULL;
        }
 
@@ -267,7 +267,7 @@ void *get_cont_phys_pages_at(size_t order, physaddr_t at, int flags)
                if (!page_is_free(i)) {
                        spin_unlock_irqsave(&colored_page_free_list_lock);
                        if (flags & KMALLOC_ERROR)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        return NULL;
                }
        }
index 85de77a..7929263 100644 (file)
@@ -2290,7 +2290,7 @@ void proc_get_set(struct process_set *pset)
                pset->procs = (struct proc **)
                        kzmalloc(pset->size * sizeof(struct proc *), KMALLOC_WAIT);
                if (!pset->procs)
-                       error(-ENOMEM, NULL);
+                       error(-ENOMEM, ERROR_FIXME);
 
                spin_lock(&pid_hash_lock);
                hash_for_each(pid_hash, enum_proc, pset);
index 89b35e8..a50d5b4 100644 (file)
@@ -269,7 +269,7 @@ static void alloc_cpu_buffers(void)
 
        profiler_queue = qopen(profiler_queue_limit, 0, NULL, NULL);
        if (!profiler_queue)
-               error(ENOMEM, NULL);
+               error(ENOMEM, ERROR_FIXME);
        if (waserror()) {
                free_cpu_buffers();
                nexterror();
index da1adf0..c6a1a95 100644 (file)
@@ -167,7 +167,7 @@ void *kmem_cache_alloc(struct kmem_cache *cp, int flags)
                        !kmem_cache_grow(cp)) {
                        spin_unlock_irqsave(&cp->cache_lock);
                        if (flags & KMALLOC_ERROR)
-                               error(ENOMEM, NULL);
+                               error(ENOMEM, ERROR_FIXME);
                        else
                                panic("[German Accent]: OOM for a small slab growth!!!");
                }
index 61af1a8..9664a41 100644 (file)
@@ -2113,7 +2113,7 @@ static int vfs_wstat(struct file *file, uint8_t *stat_m, size_t stat_sz,
        dir = kzmalloc(sizeof(struct dir) + stat_sz, KMALLOC_WAIT);
        m_sz = convM2D(stat_m, stat_sz, &dir[0], (char*)&dir[1]);
        if (m_sz != stat_sz) {
-               set_error(EINVAL, NULL);
+               set_error(EINVAL, ERROR_FIXME);
                kfree(dir);
                return -1;
        }