| plan 9 kernel history: overview | file list | diff list |
1999/0721/pc/trap.c (diff list | history)
| 1999/0720/sys/src/9/pc/trap.c:314,331 – 1999/0721/sys/src/9/pc/trap.c:314,337 (short | long | prev | next) | ||
| 1998/0811 | print("\n ur %lux up %lux\n", ureg, up); | |
| 1993/0915 | } | |
| 1999/0721 | /* * Fill in enough of Ureg to get a stack trace, and call a function. * Used by debugging interface rdb. */ | |
| 1993/0915 | void | |
| 1999/0720 |
| |
| 1999/0721 | callwithureg(void (*fn)(Ureg*)) | |
| 1999/0720 | { | |
| 1999/0721 | Ureg ureg; ureg.pc = getcallerpc(&fn); ureg.sp = (ulong)&fn; fn(&ureg); | |
| 1999/0720 | } | |
| 1991/0720 |
| |
| 1999/0721 | static void _dumpstack(Ureg *ureg) | |
| 1991/0720 | { | |
| 1992/0804 | ulong l, v, i; | |
| 1999/0720 |
| |
| 1997/0327 | uchar *p; | |
| 1992/0804 | extern ulong etext; | |
| 1999/0720/sys/src/9/pc/trap.c:332,339 – 1999/0721/sys/src/9/pc/trap.c:338,344 | ||
| 1993/0915 | if(up == 0) | |
| 1992/0804 | return; | |
| 1999/0720 |
| |
| 1999/0721 | print("ktrace /kernel/path %.8lux %.8lux\n", ureg->pc, ureg->sp); | |
| 1992/0804 | i = 0; | |
| 1994/0816 | for(l=(ulong)&l; l<(ulong)(up->kstack+KSTACK); l+=4){ | |
| 1992/0804 | v = *(ulong*)l; | |
| 1999/0720/sys/src/9/pc/trap.c:356,361 – 1999/0721/sys/src/9/pc/trap.c:361,372 | ||
| 1992/0804 | } | |
| 1999/0720 | if(i) print("\n"); | |
| 1999/0721 | } void dumpstack(void) { callwithureg(_dumpstack); | |
| 1991/0720 | } | |
| 1997/0327 | static void | |