+ if ((debug_buf_size != 0) &&
+ ((debug_buf_ptr-debug_buf) < (int)debug_buf_size)) {
+ *debug_buf_ptr=c;
+ debug_buf_ptr++;
+ }
+}
+
+/* In-place packing routines -- inefficient, but they're called at most once.
+ */
+
+int packA(char *inbuf, uint32_t length, uint32_t buflen)
+{
+ unsigned int i, j = 0;
+ pasc_t pack;
+
+ length = MIN(((length & ~7) +8), buflen);
+
+ for (i = 0; i < length; i+=8)
+ {
+ pack.a = inbuf[i];
+ pack.b = inbuf[i+1];
+ pack.c = inbuf[i+2];
+ pack.d = inbuf[i+3];
+ pack.e = inbuf[i+4];
+ pack.f = inbuf[i+5];
+ pack.g = inbuf[i+6];
+ pack.h = inbuf[i+7];
+ bcopy ((char *) &pack, inbuf + j, 7);
+ j += 7;
+ }
+ return ((length * 7)/8);
+}
+
+void unpackA(char *inbuf, uint32_t length)
+{
+ pasc_t packs;
+ unsigned i = 0;
+ length = (length * 8)/7;
+
+ while (i < length) {
+ packs = *(pasc_t *)&inbuf[i];
+ bcopy(&inbuf[i+7], &inbuf[i+8], MAX(0, (int) (length - i - 8)));
+ inbuf[i++] = packs.a;
+ inbuf[i++] = packs.b;
+ inbuf[i++] = packs.c;
+ inbuf[i++] = packs.d;
+ inbuf[i++] = packs.e;
+ inbuf[i++] = packs.f;
+ inbuf[i++] = packs.g;
+ inbuf[i++] = packs.h;
+ }
+}
+
+extern void *proc_name_address(void *p);
+
+static void
+panic_display_process_name(void) {
+ char proc_name[32] = "Unknown";
+ task_t ctask = 0;
+ void *cbsd_info = 0;
+
+ if (ml_nofault_copy((vm_offset_t)¤t_thread()->task, (vm_offset_t) &ctask, sizeof(task_t)) == sizeof(task_t))
+ if(ml_nofault_copy((vm_offset_t)&ctask->bsd_info, (vm_offset_t)&cbsd_info, sizeof(&ctask->bsd_info)) == sizeof(&ctask->bsd_info))
+ if (cbsd_info && (ml_nofault_copy((vm_offset_t) proc_name_address(cbsd_info), (vm_offset_t) &proc_name, sizeof(proc_name)) > 0))
+ proc_name[sizeof(proc_name) - 1] = '\0';
+ kdb_printf("\nBSD process name corresponding to current thread: %s\n", proc_name);
+}
+
+unsigned panic_active(void) {
+ return ((panicstr != (char *) 0));
+}
+
+void populate_model_name(char *model_string) {
+ strlcpy(model_name, model_string, sizeof(model_name));
+}
+
+static void panic_display_model_name(void) {
+ char tmp_model_name[sizeof(model_name)];
+
+ if (ml_nofault_copy((vm_offset_t) &model_name, (vm_offset_t) &tmp_model_name, sizeof(model_name)) != sizeof(model_name))