libc.c revision 98c1a6b426f43496c09905dbb035174876c6cd93
2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 2N/A * Use is subject to license terms. 2N/A#
pragma ident "%Z%%M% %I% %E% SMI" mdb_printf(
" sigmask = 0x%08x 0x%08x 0x%08x 0x%08x\n",
mdb_printf(
" stack = sp 0x%p size 0x%lx flags %s\n",
mdb_printf(
" sigset = 0x%08x 0x%08x 0x%08x 0x%08x\n",
mdb_printf(
" stack = sp 0x%p size 0x%lx flags %s\n",
static const char *
const msname[] = {
"USER",
"SYSTEM",
"TRAP",
"TFAULT",
"DFAULT",
"KFAULT",
"USER_LOCK",
"SLEEP",
"WAIT_CPU",
"STOPPED" mdb_printf(
" signal sent from child PID %d (uid %d)\n",
mdb_printf(
" usr time = 0t%ld ticks, sys time = 0t%ld ticks\n",
mdb_printf(
" fault address = 0x%p\n trapno = %d\n",
mdb_printf(
" last fault address = 0x%p fault type = %d\n",
for (i = 0; i <
sizeof (
msname) /
sizeof (
msname[0]); i++) {
mdb_warn(
"lwpstatus information not available");
mdb_warn(
"walker only supports global walk\n");
mdb_warn(
"failed to read lwpstatus information");
* ==================== threads ========================== * These are the interfaces that used to require libthread. * Now, libthread has been folded into libc. * ======================================================= * prt_addr() is called up to three times to generate arguments for * one call to mdb_printf(). We must return at least three different * pointers to static storage for consecutive calls to prt_addr(). if (
ix ==
4)
/* use buffers in sequence: 0, 1, 2, 3 */ return (
pad?
"<NULL> " :
"<NULL>");
HD(
"mapsiz guardsize stktop stksiz");
HD(
"ix lwpid pri mappedpri policy pri_mapped");
HD(
"cursig pleasestop stop signalled dead unwind");
HD(
"detached writer stopping can'prolog preempt savpreempt");
HD(
"sigsuspend main fork primarymap m'spinners d'noreserv");
HD(
"queue_fifo c'w'defer e'detect' async_safe pad1[0] pad1[1]");
HD(
"adapt'spin rele'spin queue_spin critical sigdefer vfork");
HD(
"cancelable c'pending c'disabled c'async save_async mutator");
HD(
"created replace nocancel errno errnop");
HD(
"clnup_hdr schedctl_called schedctl");
HD(
"bindflags pad2 stsd &ftsd");
HD(
"eventmask[0..1] eventnum eventdata");
HD(
"td'enable sync'reg qtype cv_wake usropts");
HD(
"startpc startarg wchan");
HD(
"link sleepq cvmutex");
HD(
"mxchain epri emappedpri");
HD(
"rdlockcnt rd_rwlock rd_count");
HD(
"heldlockcnt heldlocks tpdp");
HD(
"siglink s'l'spin s'l'spin2 s'l'sleep s'l'wakeup");
* The remainder of the ulwp_t structure * is invalid if this is a replacement. HD(
"&siginfo &spinlock &fpuenv");
* Get the address of the unique uberdata_t structure. HD(
"&link_lock &fork_lock &atfork_lock");
HD(
"&callout_lock &tdb_hash_lock &siguaction[0]");
HD(
"&bucket free_list chunks");
HD(
"&atexit_root head exit_frame_monitor");
HD(
"&tsd_metadata tsdm_nkeys tsdm_nused tsdm_destro");
HD(
"queue_head thr_hash_table hash_size hash_mask");
HD(
"ulwp_one all_lwps all_zombies");
HD(
"nthreads nzombies ndaemons pid sigacthandler");
HD(
"lwp_stacks lwp_laststack nfreestack stk_cache");
HD(
"ulwp_freelist ulwp_lastfree");
HD(
"ulwp_replace_free ulwp_replace_last");
HD(
"atforklist robustlocks");
HD(
"tdb_bootstrap tdb_sync_addr_hash tdb_'count tdb_'fail");
HD(
"tdb_sync_addr_free tdb_sync_addr_last tdb_sync_alloc");
HD(
"tdb_ev_global_mask tdb_events");
mdb_warn(
"cannot find 'uberdata.all_lwps'");
* If we have looped around to the beginning * of the circular linked list, we are done. * ======================================================= * End of thread (previously libthread) interfaces. * ==================== threads ========================== {
"siginfo",
":",
"print siginfo_t structure",
d_siginfo,
NULL },
{
"ulwp",
":",
"print ulwp_t structure",
d_ulwp,
NULL },
{
"ucontext",
"walk ucontext_t uc_link list",
{
"oldcontext",
"walk per-lwp oldcontext pointers",
{
"ulwps",
"walk list of ulwp_t pointers",