+ return current_cpu_datap()->cpu_threadtype;
+}
+
+const char *
+processor_to_datastring(const char *prefix, processor_t target_processor)
+{
+ static char printBuf[256];
+ uint32_t cpu_num = target_processor->cpu_id;
+
+ cpu_data_t *cpup = cpu_datap(cpu_num);
+ thread_t act;
+
+ act = ml_validate_nofault((vm_offset_t)cpup->cpu_active_thread,
+ sizeof(struct thread)) ? cpup->cpu_active_thread : NULL;
+
+ snprintf(printBuf, sizeof(printBuf),
+ "%s: tCPU %u (%d) [tid=0x%llx(bp=%d sp=%d) s=0x%x ps=0x%x cpa=0x%x spa=0x%llx pl=%d il=%d r=%d]",
+ prefix,
+ cpu_num,
+ target_processor->state,
+ act ? act->thread_id : ~0ULL,
+ act ? act->base_pri : -1,
+ act ? act->sched_pri : -1,
+ cpup->cpu_signals,
+ cpup->cpu_prior_signals,
+ cpup->cpu_pending_ast,
+ target_processor->processor_set->pending_AST_URGENT_cpu_mask,
+ cpup->cpu_preemption_level,
+ cpup->cpu_interrupt_level,
+ cpup->cpu_running);
+
+ return (const char *)&printBuf[0];