void ipc_pset_print( ipc_pset_t pset) { printf("pset 0x%x\n", pset); indent += 2; ipc_object_print(&pset->ips_object); iprintf("local_name = 0x%x\n", pset->ips_local_name); iprintf("kmsgs = 0x%x", pset->ips_messages.imq_messages.ikmq_base); printf(",rcvrs = 0x%x\n", pset->ips_messages.imq_threads.ithq_base); indent -=2; }
/* * Routine: ipc_pset_print * Purpose: * Pretty-print a port set for kdb. */ void ipc_pset_print( ipc_pset_t pset) { printf("pset 0x%x\n", pset); db_indent += 2; ipc_object_print(&pset->ips_object); iprintf("local_name = 0x%x\n", pset->ips_local_name); iprintf("%d kmsgs => 0x%x", ipc_list_count(pset->ips_messages.imq_messages.ikmq_base), pset->ips_messages.imq_messages.ikmq_base); printf(",rcvrs queue= 0x%x\n", &pset->ips_messages.imq_wait_queue); db_indent -=2; }
void ipc_port_print( ipc_port_t port, __unused boolean_t have_addr, __unused db_expr_t count, char *modif) { db_addr_t task; int task_id; int nmsgs; int verbose = 0; #if MACH_ASSERT int i, needs_db_indent, items_printed; #endif /* MACH_ASSERT */ if (db_option(modif, 'l') || db_option(modif, 'v')) ++verbose; printf("port 0x%x\n", port); db_indent += 2; ipc_object_print(&port->ip_object); if (ipc_port_print_long) { printf("\n"); } if (!ip_active(port)) { iprintf("timestamp=0x%x", port->ip_timestamp); } else if (port->ip_receiver_name == MACH_PORT_NULL) { iprintf("destination=0x%x (", port->ip_destination); if (port->ip_destination != MACH_PORT_NULL && (task = db_task_from_space(port->ip_destination-> ip_receiver, &task_id))) printf("task%d at 0x%x", task_id, task); else printf("unknown"); printf(")"); } else { iprintf("receiver=0x%x (", port->ip_receiver); if (port->ip_receiver == ipc_space_kernel) printf("kernel"); else if (port->ip_receiver == ipc_space_reply) printf("reply"); else if (port->ip_receiver == default_pager_space) printf("default_pager"); else if ((task = db_task_from_space(port->ip_receiver, &task_id)) != (db_addr_t)0) printf("task%d at 0x%x", task_id, task); else printf("unknown"); printf(")"); } printf(", receiver_name=0x%x\n", port->ip_receiver_name); iprintf("mscount=%d", port->ip_mscount); printf(", srights=%d", port->ip_srights); printf(", sorights=%d\n", port->ip_sorights); iprintf("nsrequest=0x%x", port->ip_nsrequest); printf(", pdrequest=0x%x", port->ip_pdrequest); printf(", dnrequests=0x%x\n", port->ip_dnrequests); iprintf("pset_count=0x%x", port->ip_pset_count); printf(", seqno=%d", port->ip_messages.imq_seqno); printf(", msgcount=%d", port->ip_messages.imq_msgcount); printf(", qlimit=%d\n", port->ip_messages.imq_qlimit); iprintf("kmsgs=0x%x", port->ip_messages.imq_messages.ikmq_base); printf(", rcvrs queue=0x%x", port->ip_messages.imq_wait_queue); printf(", kobj=0x%x\n", port->ip_kobject); iprintf("premsg=0x%x", port->ip_premsg); #if MACH_ASSERT /* don't bother printing callstack or queue links */ iprintf("ip_thread=0x%x, ip_timetrack=0x%x\n", port->ip_thread, port->ip_timetrack); items_printed = 0; needs_db_indent = 1; for (i = 0; i < IP_NSPARES; ++i) { if (port->ip_spares[i] != 0) { if (needs_db_indent) { iprintf(""); needs_db_indent = 0; } printf("%sip_spares[%d] = %d", items_printed ? ", " : "", i, port->ip_spares[i]); if (++items_printed >= 4) { needs_db_indent = 1; printf("\n"); items_printed = 0; } } } #endif /* MACH_ASSERT */ if (verbose) { iprintf("kmsg queue contents:\n"); db_indent += 2; nmsgs = db_port_queue_print(port); db_indent -= 2; iprintf("...total kmsgs: %d\n", nmsgs); } db_indent -=2; }