kernel: extra panic texts into defines
authorAlan Cox <alan@etchedpixels.co.uk>
Sun, 25 Oct 2015 14:16:42 +0000 (14:16 +0000)
committerAlan Cox <alan@etchedpixels.co.uk>
Sun, 25 Oct 2015 14:16:42 +0000 (14:16 +0000)
No real change yet but basis for very memory tight ports to use codes
instead

15 files changed:
Kernel/bank16k.c
Kernel/bank16k_low.c
Kernel/bank32k.c
Kernel/bankfixed.c
Kernel/devio.c
Kernel/filesys.c
Kernel/flat.c
Kernel/include/kernel.h
Kernel/include/panic.h [new file with mode: 0644]
Kernel/malloc.c
Kernel/process.c
Kernel/simple.c
Kernel/start.c
Kernel/swap.c
Kernel/unbanked.c

index d7e8aef..d549b9e 100644 (file)
@@ -40,7 +40,7 @@ static unsigned char pfptr = 0;
 void pagemap_add(uint8_t page)
 {
        if (pfptr == MAX_MAPS)
-               panic("map over");
+               panic(PANIC_MAPOVER);
        pfree[pfptr++] = page;
 }
 
@@ -180,7 +180,7 @@ int swapout(ptptr p)
        uint8_t *pt = (uint8_t *)&p->p_page;
 
        if (!page)
-               panic("process already swapped!\n");
+               panic(PANIC_ALREADYSWAP);
 #ifdef DEBUG
        kprintf("Swapping out %x (%d)\n", p, p->p_page);
 #endif
index 1035a89..7aa8640 100644 (file)
@@ -47,7 +47,7 @@ static unsigned char pfptr = 0;
 void pagemap_add(uint8_t page)
 {
        if (pfptr == MAX_MAPS)
-               panic("map over");
+               panic(PANIC_MAPOVER);
        pfree[pfptr++] = page;
 }
 
@@ -180,7 +180,7 @@ int swapout(ptptr p)
        uint8_t *pt = (uint8_t *)&p->page;
 
        if (!page)
-               panic("process already swapped!\n");
+               panic(PANIC_ALREADYSWAP);
 #ifdef DEBUG
        kprintf("Swapping out %x (%d)\n", p, p->p_page);
 #endif
index 086c342..0973210 100644 (file)
@@ -51,7 +51,7 @@ static unsigned char pfptr = 0;
 void pagemap_add(uint8_t page)
 {
        if (pfptr == MAX_MAPS)
-               panic("map over");
+               panic(PANIC_MAPOVER);
        pfree[pfptr++] = page;
 }
 
index 5552afe..5315b72 100644 (file)
@@ -51,7 +51,7 @@ void pagemap_add(uint8_t page)
 void pagemap_free(ptptr p)
 {
        if (p->p_page == 0)
-               panic("free0");
+               panic(PANIC_FREE0);
        pfree[pfptr++] = p->p_page;
 }
 
@@ -96,7 +96,7 @@ int swapout(ptptr p)
        uint16_t map;
 
        if (!page)
-               panic("process already swapped!\n");
+               panic(PANIC_ALREADYSWAP);
 #ifdef DEBUG
        kprintf("Swapping out %x (%d)\n", p, p->p_page);
 #endif
index 4d77b22..e568736 100644 (file)
@@ -35,7 +35,7 @@ uint8_t *bread(uint16_t dev, blkno_t blk, bool rewrite)
 
        if ((bp = bfind(dev, blk)) != NULL) {
                if (bp->bf_busy == BF_BUSY)
-                       panic("want busy block");
+                       panic(PANIC_WANTBSYB);
                else if (bp->bf_busy == BF_FREE)
                        bp->bf_busy = BF_BUSY;
                /* BF_SUPERBLOCK is fine */
@@ -175,7 +175,7 @@ bufptr freebuf(void)
                }
        }
        if (!oldest)
-               panic("no free buffers");
+               panic(PANIC_NOFREEB);
 
        if (oldest->bf_dirty) {
                if (bdwrite(oldest) == -1)
@@ -227,7 +227,7 @@ int bdread(bufptr bp)
 {
        uint16_t dev = bp->bf_dev;
        if (!validdev(dev))
-               panic("bdread: invalid dev");
+               panic(PANIC_BDR_INVD);
 
        udata.u_buf = bp;
        return ((*dev_tab[major(dev)].dev_read) (minor(dev), 0, 0));
@@ -238,7 +238,7 @@ int bdwrite(bufptr bp)
 {
        uint16_t dev = bp->bf_dev;
        if (!validdev(dev))
-               panic("bdwrite: invalid dev");
+               panic(PANIC_BDW_INVD);
 
        udata.u_buf = bp;
        return ((*dev_tab[major(dev)].dev_write) (minor(dev), 0, 0));
@@ -247,14 +247,14 @@ int bdwrite(bufptr bp)
 int cdread(uint16_t dev, uint8_t flag)
 {
        if (!validdev(dev))
-               panic("cdread: invalid dev");
+               panic(PANIC_CDR_INVD);
        return ((*dev_tab[major(dev)].dev_read) (minor(dev), 1, flag));
 }
 
 int cdwrite(uint16_t dev, uint8_t flag)
 {
        if (!validdev(dev))
-               panic("cdwrite: invalid dev");
+               panic(PANIC_CDW_INVD);
        return ((*dev_tab[major(dev)].dev_write) (minor(dev), 1, flag));
 }
 
@@ -270,7 +270,7 @@ int d_open(uint16_t dev, uint8_t flag)
 int d_close(uint16_t dev)
 {
        if (!validdev(dev))
-               panic("d_close: bad device");
+               panic(PANIC_DCL_INVD);
         bdrop(dev);
        return (*dev_tab[major(dev)].dev_close) (minor(dev));
 }
index af474e7..d97793c 100644 (file)
@@ -192,7 +192,7 @@ inoptr i_open(uint16_t dev, uint16_t ino)
     bool isnew = false;
 
     if(!validdev(dev))
-        panic("i_open: bad dev");
+        panic(PANIC_IOPEN_BAD);
 
     if(!ino){        /* ino==0 means we want a new one */
         isnew = true;
@@ -451,7 +451,7 @@ fsptr getdev(uint16_t dev)
     mnt = fs_tab_get(dev);
 
     if (!mnt || !(devfs = mnt->m_fs) || devfs->s_mounted == 0) {
-        panic("getdev: bad dev");
+        panic(PANIC_GD_BAD);
         /* Return needed to persuade SDCC all is ok */
         return NULL;
     }
@@ -549,7 +549,7 @@ void i_free(uint16_t devno, uint16_t ino)
         return;
 
     if(ino < 2 || ino >=(dev->s_isize-2)*8)
-        panic("i_free: bad ino");
+        panic(PANIC_IFREE_BADI);
 
     ++dev->s_tinode;
     if(dev->s_ninode < FILESYS_TABSIZE)
@@ -739,7 +739,7 @@ void i_deref(inoptr ino)
     magic(ino);
 
     if(!ino->c_refs)
-        panic("inode freed.");
+        panic(PANIC_INODE_FREED);
 
     if((ino->c_node.i_mode & F_MASK) == F_PIPE)
         wakeup((char *)ino);
@@ -950,12 +950,12 @@ void validblk(uint16_t dev, blkno_t num)
     mnt = fs_tab_get(dev);
 
     if(mnt == NULL || !(devptr = mnt->m_fs) || devptr->s_mounted == 0) {
-        panic("validblk: not mounted");
+        panic(PANIC_VALIDBLK_NM);
         return;
     }
 
     if(num < devptr->s_isize || num >= devptr->s_fsize)
-        panic("validblk: invalid blk");
+        panic(PANIC_VALIDBLK_INV);
 }
 
 
@@ -975,10 +975,10 @@ inoptr getinode(uint8_t uindex)
     oftindex = udata.u_files[uindex];
 
     if(oftindex >= OFTSIZE || oftindex == NO_FILE)
-        panic("getinode: bad desc table");
+        panic(PANIC_GETINO_BADT);
 
     if((inoindex = of_tab[oftindex].o_inode) < i_tab || inoindex >= i_tab+ITABSIZE)
-        panic("getinode: bad OFT");
+        panic(PANIC_GETINO_OFT);
 
     magic(inoindex);
     return(inoindex);
@@ -1077,7 +1077,7 @@ bool fmount(uint16_t dev, inoptr ino, uint16_t flags)
     struct filesys *fp;
 
     if(d_open(dev, 0) != 0)
-        panic("fmount: can't open filesystem");
+        panic(PANIC_FMOUNT_NOPEN);
 
     m = newfstab();
     if (m == NULL) {
@@ -1116,5 +1116,5 @@ bool fmount(uint16_t dev, inoptr ino, uint16_t flags)
 void magic(inoptr ino)
 {
     if(ino->c_magic != CMAGIC)
-        panic("corrupt inode");
+        panic(PANIC_CORRUPTI);
 }
index e891db8..e9b2a9e 100644 (file)
@@ -76,7 +76,7 @@ static struct mem *mem_alloc(void)
                        return p;
                }
        }
-       panic("mem_alloc: leak");
+       panic(PANIC_MLEAK);
 }
 
 static void *kdup(void *p, void *e)
index 667b898..8f7a7e1 100644 (file)
@@ -15,6 +15,8 @@ From UZI by Doug Braun and UZI280 by Stefan Nitschke.
 #include "config.h"
 #include "cpu.h"
 
+#include "panic.h"
+
 #ifndef NULL
 #define NULL (void *)0
 #endif
diff --git a/Kernel/include/panic.h b/Kernel/include/panic.h
new file mode 100644 (file)
index 0000000..8643eed
--- /dev/null
@@ -0,0 +1,34 @@
+#define PANIC_DOUBLE_FREE      "double free"
+#define PANIC_MAXSWAP          "maxswap"
+#define PANIC_NOTSELF          "notself"
+#define PANIC_NOTTY            "no tty"
+#define PANIC_NOFILESYS                "no filesys"
+#define PANIC_NOROOT           "no root"
+#define PANIC_MAPOVER          "map over"
+#define PANIC_ALREADYSWAP      "already swapped"
+#define PANIC_FREE0            "free0"
+#define PANIC_WANTBSYB         "want busy block"
+#define PANIC_NOFREEB          "no free buffers"
+#define PANIC_BDR_INVD         "bdread: invalid dev"
+#define PANIC_BDW_INVD         "bdwrite: invalid dev"
+#define PANIC_CDR_INVD         "cdread: invalid dev"
+#define PANIC_CDW_INVD         "cdwrite: invalid dev"
+#define PANIC_DCL_INVD         "d_close: bad device"
+#define PANIC_MLEAK            "mem_alloc: leak"
+#define PANIC_IOPEN_BAD                "i_open: bad dev"
+#define PANIC_GD_BAD           "getdev bad dev"
+#define PANIC_IFREE_BADI       "i_free: bad ino"
+#define PANIC_INODE_FREED      "inode freed."
+#define PANIC_VALIDBLK_NM      "validblk: not mounted"
+#define PANIC_VALIDBLK_INV     "validblk: invalid blk"
+#define PANIC_GETINO_BADT      "getinode: bad desc table"
+#define PANIC_GETINO_OFT       "getinode: bad OFT"
+#define PANIC_FMOUNT_NOPEN     "fmount: can't open filesystem"
+#define PANIC_CORRUPTI         "corrupt inode"
+#define PANIC_VOODOO           "psleep: voodoo"
+#define PANIC_GETPROC          "getproc: extra running"
+#define PANIC_EI               "getproc: can't ei"
+#define PANIC_KILLED_INIT      "killed init"
+#define PANIC_DOEXIT           "doexit won't exit"
+#define PANIC_NOINIT           "no /init"
+#define PANIC_BADFREE          "bad free"
index 0bebcc0..679afd1 100644 (file)
@@ -163,7 +163,7 @@ void kfree(void *ptr)
                mergeblk(i);
                return;
        }
-       panic("bad free");
+       panic(PANIC_BADFREE);
 }
 
 
index 346227e..85e3189 100644 (file)
@@ -29,7 +29,7 @@ void psleep(void *event)
        case P_RUNNING: // normal process
                break;
        default:
-               panic("psleep: voodoo");
+               panic(PANIC_VOODOO);
        }
 
        if (!event)
@@ -124,7 +124,7 @@ ptptr getproc(void)
 
                switch (getproc_nextp->p_status) {
                case P_RUNNING:
-                       panic("getproc: extra running");
+                       panic(PANIC_GETPROC);
                case P_READY:
 #ifdef DEBUG
                        kprintf("[getproc returning %x pid=%d]\n",
@@ -137,7 +137,7 @@ ptptr getproc(void)
                if (getproc_nextp == haltafter) {
                        /* we have only one interrupt stack so we can't take interrupts */
                        if(udata.u_ininterrupt)
-                               panic("getproc: cannot ei");
+                               panic(PANIC_EI);
                        /* yes please, interrupts on (WRS: they probably are already on?) */
                        ei();
                        platform_idle();
@@ -555,7 +555,7 @@ void doexit(int16_t val, int16_t val2)
             udata.u_page, udata.u_ptab, udata.u_ptab->p_page);
 #endif
        if (udata.u_ptab->p_pid == 1)
-               panic("killed init");
+               panic(PANIC_KILLED_INIT);
 
        _sync();                /* Not necessary, but a good idea. */
 
@@ -621,7 +621,7 @@ void doexit(int16_t val, int16_t val2)
        nproc--;
 
        switchin(getproc());
-       panic("doexit: won't exit");
+       panic(PANIC_DOEXIT);
 }
 
 void panic(char *deathcry)
@@ -638,5 +638,5 @@ void exec_or_die(void)
        kputs("Starting /init\n");
        platform_discard();
        _execve();
-       panic("no /init");      /* BIG Trouble if we Get Here!! */
+       panic(PANIC_NOINIT);    /* BIG Trouble if we Get Here!! */
 }
index 07fbe34..1b1e8ab 100644 (file)
@@ -61,7 +61,7 @@ int swapout(ptptr p)
        uint16_t map;
 
        if (!page)
-               panic("process already swapped!\n");
+               panic(PANIC_ALREADYSWAP);
 #ifdef DEBUG
        kprintf("Swapping out %x (%d)\n", p, p->p_page);
 #endif
index 9ee09b4..94cf947 100644 (file)
@@ -252,7 +252,7 @@ void fuzix_main(void)
        tty_init();
 
        if (d_open(TTYDEV, 0) != 0)
-               panic("no tty");
+               panic(PANIC_NOTTY);
 
        /* Sign on messages */
        kprintf(
@@ -304,10 +304,10 @@ void fuzix_main(void)
        kprintf("Mounting root fs (root_dev=%d): ", root_dev);
 
        if (fmount(root_dev, NULLINODE, 0))
-               panic("no filesys");
+               panic(PANIC_NOFILESYS);
        root = i_open(root_dev, ROOTINODE);
        if (!root)
-               panic("no root");
+               panic(PANIC_NOROOT);
 
        kputs("OK\n");
 
index 11a9058..1ae7b4d 100644 (file)
@@ -24,7 +24,7 @@ static uint8_t swapptr = 0;
 void swapmap_add(uint8_t swap)
 {
        if (swapptr == MAX_SWAPS)
-               panic("maxswap");
+               panic(PANIC_MAXSWAP);
        swapmap[swapptr++] = swap;
 }
 
@@ -116,7 +116,7 @@ static ptptr swapvictim(ptptr p, int notself)
 #else
        used(p);
        if (notself)
-               panic("bad notself\n");
+               panic(PANIC_NOTSELF);
        return udata.u_ptab;
 #endif
 }
index cb754c5..ead71a7 100644 (file)
@@ -281,7 +281,7 @@ void pagemap_free(ptptr p)
 {
        struct hole *m = (struct hole *) p->page;
        if (m->flags != HOLE_USED)
-               panic("double free");
+               panic(PANIC_DOUBLE_FREE);
        m->flags = HOLE_FREE;
        sweep_holes(mh);
 }