From: Alan Cox Date: Sun, 25 Oct 2015 14:16:42 +0000 (+0000) Subject: kernel: extra panic texts into defines X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=f0dfd6ca7ff4845a783ba68d68758d86d94d4be5;p=FUZIX.git kernel: extra panic texts into defines No real change yet but basis for very memory tight ports to use codes instead --- diff --git a/Kernel/bank16k.c b/Kernel/bank16k.c index d7e8aefb..d549b9ed 100644 --- a/Kernel/bank16k.c +++ b/Kernel/bank16k.c @@ -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 diff --git a/Kernel/bank16k_low.c b/Kernel/bank16k_low.c index 1035a897..7aa8640d 100644 --- a/Kernel/bank16k_low.c +++ b/Kernel/bank16k_low.c @@ -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 diff --git a/Kernel/bank32k.c b/Kernel/bank32k.c index 086c3428..09732100 100644 --- a/Kernel/bank32k.c +++ b/Kernel/bank32k.c @@ -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; } diff --git a/Kernel/bankfixed.c b/Kernel/bankfixed.c index 5552afe1..5315b72b 100644 --- a/Kernel/bankfixed.c +++ b/Kernel/bankfixed.c @@ -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 diff --git a/Kernel/devio.c b/Kernel/devio.c index 4d77b224..e5687367 100644 --- a/Kernel/devio.c +++ b/Kernel/devio.c @@ -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)); } diff --git a/Kernel/filesys.c b/Kernel/filesys.c index af474e78..d97793c2 100644 --- a/Kernel/filesys.c +++ b/Kernel/filesys.c @@ -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); } diff --git a/Kernel/flat.c b/Kernel/flat.c index e891db8e..e9b2a9ef 100644 --- a/Kernel/flat.c +++ b/Kernel/flat.c @@ -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) diff --git a/Kernel/include/kernel.h b/Kernel/include/kernel.h index 667b8984..8f7a7e12 100644 --- a/Kernel/include/kernel.h +++ b/Kernel/include/kernel.h @@ -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 index 00000000..8643eed0 --- /dev/null +++ b/Kernel/include/panic.h @@ -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" diff --git a/Kernel/malloc.c b/Kernel/malloc.c index 0bebcc0a..679afd16 100644 --- a/Kernel/malloc.c +++ b/Kernel/malloc.c @@ -163,7 +163,7 @@ void kfree(void *ptr) mergeblk(i); return; } - panic("bad free"); + panic(PANIC_BADFREE); } diff --git a/Kernel/process.c b/Kernel/process.c index 346227ef..85e31891 100644 --- a/Kernel/process.c +++ b/Kernel/process.c @@ -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!! */ } diff --git a/Kernel/simple.c b/Kernel/simple.c index 07fbe344..1b1e8ab5 100644 --- a/Kernel/simple.c +++ b/Kernel/simple.c @@ -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 diff --git a/Kernel/start.c b/Kernel/start.c index 9ee09b43..94cf9473 100644 --- a/Kernel/start.c +++ b/Kernel/start.c @@ -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"); diff --git a/Kernel/swap.c b/Kernel/swap.c index 11a9058e..1ae7b4d9 100644 --- a/Kernel/swap.c +++ b/Kernel/swap.c @@ -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 } diff --git a/Kernel/unbanked.c b/Kernel/unbanked.c index cb754c57..ead71a75 100644 --- a/Kernel/unbanked.c +++ b/Kernel/unbanked.c @@ -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); }