X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fmonitor.c;h=5bc83c33968afc24eee586c4a92bbab88c2877a2;hb=711389a80032e3a21719f8a5bac7984deec2ae43;hp=0856db7cf1fdd36e6e755f3277729e193afb4476;hpb=81ec57681357e803327c4be7351274bc32a0f419;p=sbcl.git diff --git a/src/runtime/monitor.c b/src/runtime/monitor.c index 0856db7..5bc83c3 100644 --- a/src/runtime/monitor.c +++ b/src/runtime/monitor.c @@ -188,19 +188,26 @@ kill_cmd(char **ptr) static void regs_cmd(char **ptr) { - printf("CSP\t=\t0x%08lx\n", (unsigned long)current_control_stack_pointer); - printf("CFP\t=\t0x%08lx\n", (unsigned long)current_control_frame_pointer); + struct thread *thread=arch_os_get_current_thread(); + + printf("CSP\t=\t0x%08lx ", (unsigned long)current_control_stack_pointer); + printf("CFP\t=\t0x%08lx ", (unsigned long)current_control_frame_pointer); #ifdef reg_BSP printf("BSP\t=\t0x%08lx\n", (unsigned long)current_binding_stack_pointer); #else /* printf("BSP\t=\t0x%08lx\n", (unsigned long)SymbolValue(BINDING_STACK_POINTER)); */ + printf("\n"); #endif #ifdef LISP_FEATURE_GENCGC /* printf("DYNAMIC\t=\t0x%08lx\n", DYNAMIC_SPACE_START); */ #else + printf("STATIC\t=\t0x%08lx ", + (unsigned long)SymbolValue(STATIC_SPACE_FREE_POINTER, thread)); + printf("RDONLY\t=\t0x%08lx ", + (unsigned long)SymbolValue(READ_ONLY_SPACE_FREE_POINTER, thread)); printf("DYNAMIC\t=\t0x%08lx\n", (unsigned long)current_dynamic_space); #endif @@ -208,20 +215,12 @@ regs_cmd(char **ptr) printf("ALLOC\t=\t0x%08lx\n", (unsigned long)dynamic_space_free_pointer); #else printf("ALLOC\t=\t0x%08lx\n", - (unsigned long)SymbolValue(ALLOCATION_POINTER, - arch_os_get_current_thread())); + (unsigned long)SymbolValue(ALLOCATION_POINTER, thread)); #endif #ifndef LISP_FEATURE_GENCGC printf("TRIGGER\t=\t0x%08lx\n", (unsigned long)current_auto_gc_trigger); #endif - -#if 0 - printf("STATIC\t=\t0x%08lx\n", - (unsigned long)SymbolValue(STATIC_SPACE_FREE_POINTER)); - printf("RDONLY\t=\t0x%08lx\n", - (unsigned long)SymbolValue(READ_ONLY_SPACE_FREE_POINTER)); -#endif } static void @@ -274,8 +273,7 @@ search_cmd(char **ptr) end += 2; if (widetag_of(obj) == SIMPLE_FUN_HEADER_WIDETAG) { print((long)addr | FUN_POINTER_LOWTAG); - } else if (lowtag_of(obj) == OTHER_IMMEDIATE_0_LOWTAG || - lowtag_of(obj) == OTHER_IMMEDIATE_1_LOWTAG) { + } else if (other_immediate_lowtag_p(obj)) { print((lispobj)addr | OTHER_POINTER_LOWTAG); } else { print((lispobj)addr); @@ -303,9 +301,13 @@ quit_cmd(char **ptr) printf("Really quit? [y] "); fflush(stdout); - fgets(buf, sizeof(buf), ldb_in); - if (buf[0] == 'y' || buf[0] == 'Y' || buf[0] == '\n') + if (fgets(buf, sizeof(buf), ldb_in)) { + if (buf[0] == 'y' || buf[0] == 'Y' || buf[0] == '\n') + exit(1); + } else { + printf("\nUnable to read response, assuming y.\n"); exit(1); + } } static void @@ -451,6 +453,10 @@ sub_monitor(void) if (!ldb_in) { #ifndef LISP_FEATURE_WIN32 ldb_in = fopen("/dev/tty","r+"); + if (ldb_in == NULL) { + perror("Error opening /dev/tty"); + ldb_in = stdin; + } #else ldb_in = stdin; #endif