| plan 9 kernel history: overview | file list | diff list |
2001/0527/port/rdb.c (diff list | history)
| 2001/0527/sys/src/9/port/rdb.c:1,109 – 2002/0217/sys/src/9/port/rdb.c:1,109 (short | long | prev | next) | ||
|
Convert to new fmt library.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1999/0820 | #include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "ureg.h" #define DBG if(0)scrprint #pragma varargck argpos scrprint 1 static Ureg ureg; static void scrprint(char *fmt, ...) { char buf[128]; va_list va; int n; va_start(va, fmt); | |
| 2002/0217 | n = vseprint(buf, buf+sizeof buf, fmt, va)-buf; | |
| 1999/0820 | va_end(va); putstrn(buf, n); } static char* getline(void) { static char buf[128]; int i, c; for(;;){ for(i=0; i<nelem(buf) && (c=serialgetc()) != '\n'; i++){ DBG("%c...", c); buf[i] = c; } if(i < nelem(buf)){ buf[i] = 0; return buf; } } } static void* | |
| 2000/0611 | addr(char *s, Ureg *ureg, char **p) | |
| 1999/0820 | { ulong a; | |
| 2000/0611 | a = strtoul(s, p, 16); | |
| 1999/0820 | if(a < sizeof(Ureg)) return ((uchar*)ureg)+a; return (void*)a; } static void talkrdb(Ureg *ureg) { uchar *a; | |
| 2000/0611 | char *p; | |
| 1999/0820 | char *req; | |
| 2001/0527 | serialoq = nil; // turn off serial console kprintoq = nil; // turn off /dev/kprint if active | |
| 1999/1031 | // scrprint("Plan 9 debugger\n"); | |
| 1999/0820 | iprint("Edebugger reset\n"); for(;;){ req = getline(); switch(*req){ case 'r': | |
| 2000/0611 | a = addr(req+1, ureg, nil); | |
| 1999/0820 | DBG("read %p\n", a); iprint("R%.8lux %.2ux %.2ux %.2ux %.2ux\n", strtoul(req+1, 0, 16), a[0], a[1], a[2], a[3]); | |
| 2000/0611 | break; case 'w': a = addr(req+1, ureg, &p); *(ulong*)a = strtoul(p, nil, 16); iprint("W\n"); | |
| 1999/0820 | break; /* * case Tmput: n = min[4]; if(n > 4){ mesg(Rerr, Ecount); break; } a = addr(min+0); scrprint("mput %.8lux\n", a); memmove(a, min+5, n); mesg(Rmput, mout); break; * */ default: DBG("unknown %c\n", *req); iprint("Eunknown message\n"); break; } } } void rdb(void) { splhi(); iprint("rdb..."); callwithureg(talkrdb); } | |