void pagemap_add(uint8_t page)
{
if (pfptr == MAX_MAPS)
- panic("map over");
+ panic(PANIC_MAPOVER);
pfree[pfptr++] = page;
}
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
void pagemap_add(uint8_t page)
{
if (pfptr == MAX_MAPS)
- panic("map over");
+ panic(PANIC_MAPOVER);
pfree[pfptr++] = page;
}
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
void pagemap_add(uint8_t page)
{
if (pfptr == MAX_MAPS)
- panic("map over");
+ panic(PANIC_MAPOVER);
pfree[pfptr++] = page;
}
void pagemap_free(ptptr p)
{
if (p->p_page == 0)
- panic("free0");
+ panic(PANIC_FREE0);
pfree[pfptr++] = p->p_page;
}
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
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 */
}
}
if (!oldest)
- panic("no free buffers");
+ panic(PANIC_NOFREEB);
if (oldest->bf_dirty) {
if (bdwrite(oldest) == -1)
{
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));
{
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));
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));
}
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));
}
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;
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;
}
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)
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);
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);
}
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);
struct filesys *fp;
if(d_open(dev, 0) != 0)
- panic("fmount: can't open filesystem");
+ panic(PANIC_FMOUNT_NOPEN);
m = newfstab();
if (m == NULL) {
void magic(inoptr ino)
{
if(ino->c_magic != CMAGIC)
- panic("corrupt inode");
+ panic(PANIC_CORRUPTI);
}
return p;
}
}
- panic("mem_alloc: leak");
+ panic(PANIC_MLEAK);
}
static void *kdup(void *p, void *e)
#include "config.h"
#include "cpu.h"
+#include "panic.h"
+
#ifndef NULL
#define NULL (void *)0
#endif
--- /dev/null
+#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"
mergeblk(i);
return;
}
- panic("bad free");
+ panic(PANIC_BADFREE);
}
case P_RUNNING: // normal process
break;
default:
- panic("psleep: voodoo");
+ panic(PANIC_VOODOO);
}
if (!event)
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",
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();
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. */
nproc--;
switchin(getproc());
- panic("doexit: won't exit");
+ panic(PANIC_DOEXIT);
}
void panic(char *deathcry)
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!! */
}
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
tty_init();
if (d_open(TTYDEV, 0) != 0)
- panic("no tty");
+ panic(PANIC_NOTTY);
/* Sign on messages */
kprintf(
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");
void swapmap_add(uint8_t swap)
{
if (swapptr == MAX_SWAPS)
- panic("maxswap");
+ panic(PANIC_MAXSWAP);
swapmap[swapptr++] = swap;
}
#else
used(p);
if (notself)
- panic("bad notself\n");
+ panic(PANIC_NOTSELF);
return udata.u_ptab;
#endif
}
{
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);
}