Print this page
8158 Want named threads API
9857 proc manpages should have LIBRARY section

*** 1301,1318 **** --- 1301,1336 ---- } return (pt_regs(addr, flags, argc, argv)); } + static void + pt_thread_name(mdb_tgt_t *t, mdb_tgt_tid_t tid, char *buf, size_t bufsize) + { + char name[THREAD_NAME_MAX]; + + buf[0] = '\0'; + + if (t->t_pshandle == NULL || + Plwp_getname(t->t_pshandle, tid, name, sizeof (name)) != 0 || + name[0] == '\0') { + (void) mdb_snprintf(buf, bufsize, "%lu", tid); + return; + } + + (void) mdb_snprintf(buf, bufsize, "%lu [%s]", tid, name); + } + static int pt_findstack(uintptr_t tid, uint_t flags, int argc, const mdb_arg_t *argv) { mdb_tgt_t *t = mdb.m_target; mdb_tgt_gregset_t gregs; int showargs = 0; int count; uintptr_t pc, sp; + char name[128]; if (!(flags & DCMD_ADDRSPEC)) return (DCMD_USAGE); count = mdb_getopts(argc, argv, 'v', MDB_OPT_SETBITS, TRUE, &showargs,
*** 1332,1342 **** #if defined(__i386) || defined(__amd64) sp = gregs.gregs[R_FP]; #else sp = gregs.gregs[R_SP]; #endif ! mdb_printf("stack pointer for thread %p: %p\n", tid, sp); if (pc != 0) mdb_printf("[ %0?lr %a() ]\n", sp, pc); (void) mdb_inc_indent(2); mdb_set_dot(sp); --- 1350,1363 ---- #if defined(__i386) || defined(__amd64) sp = gregs.gregs[R_FP]; #else sp = gregs.gregs[R_SP]; #endif ! ! pt_thread_name(t, tid, name, sizeof (name)); ! ! mdb_printf("stack pointer for thread %s: %p\n", name, sp); if (pc != 0) mdb_printf("[ %0?lr %a() ]\n", sp, pc); (void) mdb_inc_indent(2); mdb_set_dot(sp);