Lines Matching refs:t

194 	mdb_tgt_t *t;  in mdb_tgt_create()  local
201 t = mdb_zalloc(sizeof (mdb_tgt_t), UM_SLEEP); in mdb_tgt_create()
202 mdb_list_append(&mdb.m_tgtlist, t); in mdb_tgt_create()
204 t->t_module = &mdb.m_rmod; in mdb_tgt_create()
205 t->t_matched = T_SE_END; in mdb_tgt_create()
206 t->t_flags = flags; in mdb_tgt_create()
207 t->t_vepos = 1; in mdb_tgt_create()
208 t->t_veneg = 1; in mdb_tgt_create()
212 t->t_module = mp; in mdb_tgt_create()
217 if (ctor(t, argc, argv) != 0) { in mdb_tgt_create()
218 mdb_list_delete(&mdb.m_tgtlist, t); in mdb_tgt_create()
219 mdb_free(t, sizeof (mdb_tgt_t)); in mdb_tgt_create()
224 t->t_module->mod_name, (void *)t); in mdb_tgt_create()
226 (void) t->t_ops->t_status(t, &t->t_status); in mdb_tgt_create()
227 return (t); in mdb_tgt_create()
231 mdb_tgt_getflags(mdb_tgt_t *t) in mdb_tgt_getflags() argument
233 return (t->t_flags); in mdb_tgt_getflags()
237 mdb_tgt_setflags(mdb_tgt_t *t, int flags) in mdb_tgt_setflags() argument
242 return (t->t_ops->t_setflags(t, flags)); in mdb_tgt_setflags()
246 mdb_tgt_setcontext(mdb_tgt_t *t, void *context) in mdb_tgt_setcontext() argument
248 return (t->t_ops->t_setcontext(t, context)); in mdb_tgt_setcontext()
253 tgt_delete_vespec(mdb_tgt_t *t, void *private, int vid, void *data) in tgt_delete_vespec() argument
255 (void) mdb_tgt_vespec_delete(t, vid); in tgt_delete_vespec()
260 mdb_tgt_destroy(mdb_tgt_t *t) in mdb_tgt_destroy() argument
264 if (mdb.m_target == t) { in mdb_tgt_destroy()
266 t->t_module->mod_name, (void *)t); in mdb_tgt_destroy()
267 t->t_ops->t_deactivate(t); in mdb_tgt_destroy()
272 t->t_module->mod_name, (void *)t); in mdb_tgt_destroy()
274 for (xdp = mdb_list_next(&t->t_xdlist); xdp != NULL; xdp = nxdp) { in mdb_tgt_destroy()
276 mdb_list_delete(&t->t_xdlist, xdp); in mdb_tgt_destroy()
280 mdb_tgt_sespec_idle_all(t, EBUSY, TRUE); in mdb_tgt_destroy()
281 (void) mdb_tgt_vespec_iter(t, tgt_delete_vespec, NULL); in mdb_tgt_destroy()
282 t->t_ops->t_destroy(t); in mdb_tgt_destroy()
284 mdb_list_delete(&mdb.m_tgtlist, t); in mdb_tgt_destroy()
285 mdb_free(t, sizeof (mdb_tgt_t)); in mdb_tgt_destroy()
292 mdb_tgt_activate(mdb_tgt_t *t) in mdb_tgt_activate() argument
302 if ((mdb.m_target = t) != NULL) { in mdb_tgt_activate()
306 t->t_module->mod_name, (void *)t); in mdb_tgt_activate()
347 t->t_ops->t_activate(t); in mdb_tgt_activate()
352 mdb_tgt_periodic(mdb_tgt_t *t) in mdb_tgt_periodic() argument
354 t->t_ops->t_periodic(t); in mdb_tgt_periodic()
358 mdb_tgt_name(mdb_tgt_t *t) in mdb_tgt_name() argument
360 return (t->t_ops->t_name(t)); in mdb_tgt_name()
364 mdb_tgt_isa(mdb_tgt_t *t) in mdb_tgt_isa() argument
366 return (t->t_ops->t_isa(t)); in mdb_tgt_isa()
370 mdb_tgt_platform(mdb_tgt_t *t) in mdb_tgt_platform() argument
372 return (t->t_ops->t_platform(t)); in mdb_tgt_platform()
376 mdb_tgt_uname(mdb_tgt_t *t, struct utsname *utsp) in mdb_tgt_uname() argument
378 return (t->t_ops->t_uname(t, utsp)); in mdb_tgt_uname()
382 mdb_tgt_dmodel(mdb_tgt_t *t) in mdb_tgt_dmodel() argument
384 return (t->t_ops->t_dmodel(t)); in mdb_tgt_dmodel()
388 mdb_tgt_auxv(mdb_tgt_t *t, const auxv_t **auxvp) in mdb_tgt_auxv() argument
390 return (t->t_ops->t_auxv(t, auxvp)); in mdb_tgt_auxv()
394 mdb_tgt_aread(mdb_tgt_t *t, mdb_tgt_as_t as, in mdb_tgt_aread() argument
397 if (t->t_flags & MDB_TGT_F_ASIO) in mdb_tgt_aread()
398 return (t->t_ops->t_aread(t, as, buf, n, addr)); in mdb_tgt_aread()
404 return (t->t_ops->t_vread(t, buf, n, addr)); in mdb_tgt_aread()
406 return (t->t_ops->t_pread(t, buf, n, addr)); in mdb_tgt_aread()
408 return (t->t_ops->t_fread(t, buf, n, addr)); in mdb_tgt_aread()
410 return (t->t_ops->t_ioread(t, buf, n, addr)); in mdb_tgt_aread()
412 return (t->t_ops->t_aread(t, as, buf, n, addr)); in mdb_tgt_aread()
416 mdb_tgt_awrite(mdb_tgt_t *t, mdb_tgt_as_t as, in mdb_tgt_awrite() argument
419 if (!(t->t_flags & MDB_TGT_F_RDWR)) in mdb_tgt_awrite()
422 if (t->t_flags & MDB_TGT_F_ASIO) in mdb_tgt_awrite()
423 return (t->t_ops->t_awrite(t, as, buf, n, addr)); in mdb_tgt_awrite()
429 return (t->t_ops->t_vwrite(t, buf, n, addr)); in mdb_tgt_awrite()
431 return (t->t_ops->t_pwrite(t, buf, n, addr)); in mdb_tgt_awrite()
433 return (t->t_ops->t_fwrite(t, buf, n, addr)); in mdb_tgt_awrite()
435 return (t->t_ops->t_iowrite(t, buf, n, addr)); in mdb_tgt_awrite()
437 return (t->t_ops->t_awrite(t, as, buf, n, addr)); in mdb_tgt_awrite()
441 mdb_tgt_vread(mdb_tgt_t *t, void *buf, size_t n, uintptr_t addr) in mdb_tgt_vread() argument
443 return (t->t_ops->t_vread(t, buf, n, addr)); in mdb_tgt_vread()
447 mdb_tgt_vwrite(mdb_tgt_t *t, const void *buf, size_t n, uintptr_t addr) in mdb_tgt_vwrite() argument
449 if (t->t_flags & MDB_TGT_F_RDWR) in mdb_tgt_vwrite()
450 return (t->t_ops->t_vwrite(t, buf, n, addr)); in mdb_tgt_vwrite()
456 mdb_tgt_pread(mdb_tgt_t *t, void *buf, size_t n, physaddr_t addr) in mdb_tgt_pread() argument
458 return (t->t_ops->t_pread(t, buf, n, addr)); in mdb_tgt_pread()
462 mdb_tgt_pwrite(mdb_tgt_t *t, const void *buf, size_t n, physaddr_t addr) in mdb_tgt_pwrite() argument
464 if (t->t_flags & MDB_TGT_F_RDWR) in mdb_tgt_pwrite()
465 return (t->t_ops->t_pwrite(t, buf, n, addr)); in mdb_tgt_pwrite()
471 mdb_tgt_fread(mdb_tgt_t *t, void *buf, size_t n, uintptr_t addr) in mdb_tgt_fread() argument
473 return (t->t_ops->t_fread(t, buf, n, addr)); in mdb_tgt_fread()
477 mdb_tgt_fwrite(mdb_tgt_t *t, const void *buf, size_t n, uintptr_t addr) in mdb_tgt_fwrite() argument
479 if (t->t_flags & MDB_TGT_F_RDWR) in mdb_tgt_fwrite()
480 return (t->t_ops->t_fwrite(t, buf, n, addr)); in mdb_tgt_fwrite()
486 mdb_tgt_ioread(mdb_tgt_t *t, void *buf, size_t n, uintptr_t addr) in mdb_tgt_ioread() argument
488 return (t->t_ops->t_ioread(t, buf, n, addr)); in mdb_tgt_ioread()
492 mdb_tgt_iowrite(mdb_tgt_t *t, const void *buf, size_t n, uintptr_t addr) in mdb_tgt_iowrite() argument
494 if (t->t_flags & MDB_TGT_F_RDWR) in mdb_tgt_iowrite()
495 return (t->t_ops->t_iowrite(t, buf, n, addr)); in mdb_tgt_iowrite()
501 mdb_tgt_vtop(mdb_tgt_t *t, mdb_tgt_as_t as, uintptr_t va, physaddr_t *pap) in mdb_tgt_vtop() argument
503 return (t->t_ops->t_vtop(t, as, va, pap)); in mdb_tgt_vtop()
507 mdb_tgt_readstr(mdb_tgt_t *t, mdb_tgt_as_t as, char *buf, in mdb_tgt_readstr() argument
510 ssize_t n = -1, nread = mdb_tgt_aread(t, as, buf, nbytes, addr); in mdb_tgt_readstr()
522 while (nread < nbytes && (n = mdb_tgt_aread(t, as, p, 1, addr)) == 1) { in mdb_tgt_readstr()
541 mdb_tgt_writestr(mdb_tgt_t *t, mdb_tgt_as_t as, in mdb_tgt_writestr() argument
544 ssize_t nwritten = mdb_tgt_awrite(t, as, buf, strlen(buf) + 1, addr); in mdb_tgt_writestr()
549 mdb_tgt_lookup_by_name(mdb_tgt_t *t, const char *obj, in mdb_tgt_lookup_by_name() argument
556 if (name == NULL || t == NULL) in mdb_tgt_lookup_by_name()
566 if (t->t_ops->t_lookup_by_name(t, obj, name, &sym, &info) == 0) in mdb_tgt_lookup_by_name()
580 mdb_tgt_lookup_by_addr(mdb_tgt_t *t, uintptr_t addr, uint_t flags, in mdb_tgt_lookup_by_addr() argument
586 if (t == NULL) in mdb_tgt_lookup_by_addr()
589 if (t->t_ops->t_lookup_by_addr(t, addr, flags, in mdb_tgt_lookup_by_addr()
611 mdb_tgt_lookup_by_scope(mdb_tgt_t *t, const char *s, GElf_Sym *symp, in mdb_tgt_lookup_by_scope() argument
618 if (t == NULL) in mdb_tgt_lookup_by_scope()
637 return (mdb_tgt_lookup_by_name(t, object, name, symp, sip)); in mdb_tgt_lookup_by_scope()
641 mdb_tgt_symbol_iter(mdb_tgt_t *t, const char *obj, uint_t which, in mdb_tgt_symbol_iter() argument
648 return (t->t_ops->t_symbol_iter(t, obj, which, type, cb, p)); in mdb_tgt_symbol_iter()
652 mdb_tgt_readsym(mdb_tgt_t *t, mdb_tgt_as_t as, void *buf, size_t nbytes, in mdb_tgt_readsym() argument
657 if (mdb_tgt_lookup_by_name(t, obj, name, &sym, NULL) == 0) in mdb_tgt_readsym()
658 return (mdb_tgt_aread(t, as, buf, nbytes, sym.st_value)); in mdb_tgt_readsym()
664 mdb_tgt_writesym(mdb_tgt_t *t, mdb_tgt_as_t as, const void *buf, in mdb_tgt_writesym() argument
669 if (mdb_tgt_lookup_by_name(t, obj, name, &sym, NULL) == 0) in mdb_tgt_writesym()
670 return (mdb_tgt_awrite(t, as, buf, nbytes, sym.st_value)); in mdb_tgt_writesym()
676 mdb_tgt_mapping_iter(mdb_tgt_t *t, mdb_tgt_map_f *cb, void *p) in mdb_tgt_mapping_iter() argument
678 return (t->t_ops->t_mapping_iter(t, cb, p)); in mdb_tgt_mapping_iter()
682 mdb_tgt_object_iter(mdb_tgt_t *t, mdb_tgt_map_f *cb, void *p) in mdb_tgt_object_iter() argument
684 return (t->t_ops->t_object_iter(t, cb, p)); in mdb_tgt_object_iter()
688 mdb_tgt_addr_to_map(mdb_tgt_t *t, uintptr_t addr) in mdb_tgt_addr_to_map() argument
690 return (t->t_ops->t_addr_to_map(t, addr)); in mdb_tgt_addr_to_map()
694 mdb_tgt_name_to_map(mdb_tgt_t *t, const char *name) in mdb_tgt_name_to_map() argument
696 return (t->t_ops->t_name_to_map(t, name)); in mdb_tgt_name_to_map()
700 mdb_tgt_addr_to_ctf(mdb_tgt_t *t, uintptr_t addr) in mdb_tgt_addr_to_ctf() argument
702 return (t->t_ops->t_addr_to_ctf(t, addr)); in mdb_tgt_addr_to_ctf()
706 mdb_tgt_name_to_ctf(mdb_tgt_t *t, const char *name) in mdb_tgt_name_to_ctf() argument
708 return (t->t_ops->t_name_to_ctf(t, name)); in mdb_tgt_name_to_ctf()
716 mdb_tgt_status(mdb_tgt_t *t, mdb_tgt_status_t *tsp) in mdb_tgt_status() argument
718 uint_t dstop = (t->t_status.st_flags & MDB_TGT_DSTOP); in mdb_tgt_status()
719 uint_t istop = (t->t_status.st_flags & MDB_TGT_ISTOP); in mdb_tgt_status()
720 uint_t state = t->t_status.st_state; in mdb_tgt_status()
729 if (tsp == &t->t_status && t->t_ops->t_status(t, &t->t_status) != 0) in mdb_tgt_status()
747 if (tsp != &t->t_status) in mdb_tgt_status()
748 bcopy(&t->t_status, tsp, sizeof (mdb_tgt_status_t)); in mdb_tgt_status()
759 mdb_tgt_sespec_prune_one(mdb_tgt_t *t, mdb_sespec_t *sep) in mdb_tgt_sespec_prune_one() argument
769 mdb_tgt_vespec_rele(t, vep); in mdb_tgt_sespec_prune_one()
779 mdb_tgt_sespec_prune_all(mdb_tgt_t *t) in mdb_tgt_sespec_prune_all() argument
783 for (sep = mdb_list_next(&t->t_active); sep != NULL; sep = nsep) { in mdb_tgt_sespec_prune_all()
785 mdb_tgt_sespec_prune_one(t, sep); in mdb_tgt_sespec_prune_all()
794 mdb_tgt_sespec_idle_one(mdb_tgt_t *t, mdb_sespec_t *sep, int reason) in mdb_tgt_sespec_idle_one() argument
799 (void) sep->se_ops->se_disarm(t, sep); in mdb_tgt_sespec_idle_one()
801 sep->se_ops->se_dtor(t, sep); in mdb_tgt_sespec_idle_one()
807 mdb_list_delete(&t->t_active, sep); in mdb_tgt_sespec_idle_one()
808 mdb_list_append(&t->t_idle, sep); in mdb_tgt_sespec_idle_one()
810 mdb_tgt_sespec_prune_one(t, sep); in mdb_tgt_sespec_idle_one()
818 mdb_tgt_sespec_idle_all(mdb_tgt_t *t, int reason, int clear_matched) in mdb_tgt_sespec_idle_all() argument
823 while ((sep = t->t_matched) != T_SE_END && clear_matched) { in mdb_tgt_sespec_idle_all()
829 t->t_matched = sep->se_matched; in mdb_tgt_sespec_idle_all()
831 mdb_tgt_sespec_rele(t, sep); in mdb_tgt_sespec_idle_all()
834 for (sep = mdb_list_next(&t->t_active); sep != NULL; sep = nsep) { in mdb_tgt_sespec_idle_all()
836 mdb_tgt_sespec_idle_one(t, sep, reason); in mdb_tgt_sespec_idle_all()
860 mdb_tgt_sespec_activate_one(mdb_tgt_t *t, mdb_sespec_t *sep) in mdb_tgt_sespec_activate_one() argument
877 for (dup = mdb_list_next(&t->t_active); dup; dup = mdb_list_next(dup)) { in mdb_tgt_sespec_activate_one()
879 dup->se_ops->se_secmp(t, dup, vep->ve_args)) { in mdb_tgt_sespec_activate_one()
901 mdb_tgt_sespec_rele(t, sep); in mdb_tgt_sespec_activate_one()
904 mdb_tgt_sespec_hold(t, dup); in mdb_tgt_sespec_activate_one()
917 if (sep->se_ops->se_ctor(t, sep, vep->ve_args) < 0) { in mdb_tgt_sespec_activate_one()
928 mdb_list_delete(&t->t_idle, sep); in mdb_tgt_sespec_activate_one()
929 mdb_list_append(&t->t_active, sep); in mdb_tgt_sespec_activate_one()
946 mdb_tgt_sespec_activate_all(mdb_tgt_t *t) in mdb_tgt_sespec_activate_all() argument
951 for (sep = mdb_list_next(&t->t_idle); sep != NULL; sep = nsep) { in mdb_tgt_sespec_activate_all()
954 if (mdb_tgt_sespec_activate_one(t, sep) < 0 && in mdb_tgt_sespec_activate_all()
968 mdb_tgt_sespec_arm_one(mdb_tgt_t *t, mdb_sespec_t *sep) in mdb_tgt_sespec_arm_one() argument
975 if (sep->se_ops->se_arm(t, sep) == -1) { in mdb_tgt_sespec_arm_one()
989 mdb_tgt_sespec_arm_all(mdb_tgt_t *t) in mdb_tgt_sespec_arm_all() argument
993 for (sep = mdb_list_next(&t->t_active); sep != NULL; sep = nsep) { in mdb_tgt_sespec_arm_all()
996 mdb_tgt_sespec_arm_one(t, sep); in mdb_tgt_sespec_arm_all()
1006 tgt_disarm_sespecs(mdb_tgt_t *t) in tgt_disarm_sespecs() argument
1010 for (sep = mdb_list_next(&t->t_active); sep; sep = mdb_list_next(sep)) { in tgt_disarm_sespecs()
1014 if (sep->se_ops->se_disarm(t, sep) == -1) { in tgt_disarm_sespecs()
1032 tgt_match_sespecs(mdb_tgt_t *t, int all) in tgt_match_sespecs() argument
1036 for (sep = mdb_list_next(&t->t_active); sep; sep = mdb_list_next(sep)) { in tgt_match_sespecs()
1041 sep->se_ops->se_match(t, sep, &t->t_status)) { in tgt_match_sespecs()
1043 mdb_tgt_sespec_hold(t, sep); in tgt_match_sespecs()
1044 sep->se_matched = t->t_matched; in tgt_match_sespecs()
1045 t->t_matched = sep; in tgt_match_sespecs()
1049 return (t->t_matched); in tgt_match_sespecs()
1062 tgt_continue(mdb_tgt_t *t, mdb_tgt_status_t *tsp, in tgt_continue() argument
1066 uintptr_t pc = t->t_status.st_pc; in tgt_continue()
1081 if (t->t_status.st_state == MDB_TGT_UNDEAD) in tgt_continue()
1083 if (t->t_status.st_state == MDB_TGT_DEAD) in tgt_continue()
1085 if (t->t_status.st_state == MDB_TGT_LOST) in tgt_continue()
1093 if (t->t_flags & MDB_TGT_F_STEP) in tgt_continue()
1094 t_cont = t->t_ops->t_step; in tgt_continue()
1095 else if (t->t_flags & MDB_TGT_F_NEXT) in tgt_continue()
1096 t_cont = t->t_ops->t_step; in tgt_continue()
1097 else if (t->t_flags & MDB_TGT_F_STEP_OUT) in tgt_continue()
1098 t_cont = t->t_ops->t_cont; in tgt_continue()
1105 if ((t->t_flags & MDB_TGT_F_NEXT) && !(t->t_flags & MDB_TGT_F_STEP)) { in tgt_continue()
1106 if (t->t_ops->t_next(t, &addr) == -1 || mdb_tgt_add_vbrkpt(t, in tgt_continue()
1112 t_cont = t->t_ops->t_cont; in tgt_continue()
1119 if (t->t_flags & MDB_TGT_F_STEP_OUT) { in tgt_continue()
1120 if (t->t_ops->t_step_out(t, &addr) == -1) in tgt_continue()
1123 if (mdb_tgt_add_vbrkpt(t, addr, MDB_TGT_SPEC_HIDDEN | in tgt_continue()
1132 t->t_flags &= ~T_CONT_BITS; in tgt_continue()
1133 t->t_flags |= MDB_TGT_F_BUSY; in tgt_continue()
1134 mdb_tgt_sespec_arm_all(t); in tgt_continue()
1136 ASSERT(t->t_matched != NULL); in tgt_continue()
1137 matched = t->t_matched; in tgt_continue()
1138 t->t_matched = T_SE_END; in tgt_continue()
1160 if (sep->se_ops->se_cont(t, sep, &t->t_status) == -1) { in tgt_continue()
1162 tgt_disarm_sespecs(t); in tgt_continue()
1166 if (!(t->t_status.st_flags & MDB_TGT_ISTOP)) { in tgt_continue()
1167 tgt_disarm_sespecs(t); in tgt_continue()
1168 if (t->t_status.st_state == MDB_TGT_UNDEAD) in tgt_continue()
1169 mdb_tgt_sespec_idle_all(t, EMDB_TGTZOMB, TRUE); in tgt_continue()
1170 else if (t->t_status.st_state == MDB_TGT_LOST) in tgt_continue()
1171 mdb_tgt_sespec_idle_all(t, EMDB_TGTLOST, TRUE); in tgt_continue()
1183 mdb_tgt_sespec_rele(t, sep); in tgt_continue()
1193 if (error != 0 || !(t->t_status.st_flags & MDB_TGT_ISTOP)) in tgt_continue()
1196 if ((t->t_matched = tgt_match_sespecs(t, FALSE)) != T_SE_END) { in tgt_continue()
1197 tgt_disarm_sespecs(t); in tgt_continue()
1201 mdb_tgt_sespec_arm_all(t); in tgt_continue()
1204 if (t_cont != t->t_ops->t_step || pc == t->t_status.st_pc) { in tgt_continue()
1205 if (t_cont(t, &t->t_status) != 0) in tgt_continue()
1209 tgt_disarm_sespecs(t); in tgt_continue()
1211 if (t->t_flags & MDB_TGT_F_UNLOAD) in tgt_continue()
1214 if (t->t_status.st_state == MDB_TGT_UNDEAD) in tgt_continue()
1215 mdb_tgt_sespec_idle_all(t, EMDB_TGTZOMB, TRUE); in tgt_continue()
1216 else if (t->t_status.st_state == MDB_TGT_LOST) in tgt_continue()
1217 mdb_tgt_sespec_idle_all(t, EMDB_TGTLOST, TRUE); in tgt_continue()
1218 else if (t->t_status.st_flags & MDB_TGT_ISTOP) in tgt_continue()
1219 t->t_matched = tgt_match_sespecs(t, TRUE); in tgt_continue()
1228 for (sep = t->t_matched; sep != T_SE_END; sep = sep->se_matched) { in tgt_continue()
1246 mdb_tgt_vespec_hold(t, vep); in tgt_continue()
1252 mdb_nv_set_value(mdb.m_dot, t->t_status.st_pc); in tgt_continue()
1255 ASSERT((t->t_flags & T_CONT_BITS) == 0); in tgt_continue()
1256 vep->ve_callback(t, vep->ve_id, vep->ve_data); in tgt_continue()
1258 ncont += (t->t_flags & T_CONT_BITS) != 0; in tgt_continue()
1259 cbits |= (t->t_flags & T_CONT_BITS); in tgt_continue()
1260 t->t_flags &= ~T_CONT_BITS; in tgt_continue()
1264 (void) mdb_tgt_vespec_delete(t, in tgt_continue()
1267 (void) mdb_tgt_vespec_disable(t, in tgt_continue()
1273 (void) mdb_tgt_continue(t, NULL); in tgt_continue()
1276 mdb_tgt_vespec_rele(t, vep); in tgt_continue()
1280 if (t->t_matched != T_SE_END && ncont == n) in tgt_continue()
1281 t->t_flags |= cbits; /* apply continues (see above) */ in tgt_continue()
1283 mdb_tgt_sespec_prune_all(t); in tgt_continue()
1285 t->t_status.st_flags &= ~MDB_TGT_BUSY; in tgt_continue()
1286 t->t_flags &= ~MDB_TGT_F_BUSY; in tgt_continue()
1289 bcopy(&t->t_status, tsp, sizeof (mdb_tgt_status_t)); in tgt_continue()
1309 tgt_request_continue(mdb_tgt_t *t, mdb_tgt_status_t *tsp, uint_t tflag, in tgt_request_continue() argument
1317 if (t->t_flags & MDB_TGT_F_BUSY) { in tgt_request_continue()
1318 t->t_flags |= tflag; in tgt_request_continue()
1323 status = tgt_continue(t, tsp, t_cont); in tgt_request_continue()
1324 } while (status == 0 && (t->t_flags & T_CONT_BITS)); in tgt_request_continue()
1327 for (sep = t->t_matched; sep != T_SE_END; in tgt_request_continue()
1335 warn("%s\n", sep->se_ops->se_info(t, sep, in tgt_request_continue()
1343 t->t_flags &= ~T_CONT_BITS; in tgt_request_continue()
1358 mdb_tgt_run(mdb_tgt_t *t, int argc, const mdb_arg_t *argv) in mdb_tgt_run() argument
1367 if (t->t_ops->t_run(t, argc, argv) == -1) in mdb_tgt_run()
1370 t->t_flags &= ~T_CONT_BITS; in mdb_tgt_run()
1371 (void) mdb_tgt_sespec_activate_all(t); in mdb_tgt_run()
1380 mdb_tgt_step(mdb_tgt_t *t, mdb_tgt_status_t *tsp) in mdb_tgt_step() argument
1382 return (tgt_request_continue(t, tsp, MDB_TGT_F_STEP, t->t_ops->t_step)); in mdb_tgt_step()
1386 mdb_tgt_step_out(mdb_tgt_t *t, mdb_tgt_status_t *tsp) in mdb_tgt_step_out() argument
1388 t->t_flags |= MDB_TGT_F_STEP_OUT; /* set flag even if tgt not busy */ in mdb_tgt_step_out()
1389 return (tgt_request_continue(t, tsp, 0, t->t_ops->t_cont)); in mdb_tgt_step_out()
1393 mdb_tgt_next(mdb_tgt_t *t, mdb_tgt_status_t *tsp) in mdb_tgt_next() argument
1395 t->t_flags |= MDB_TGT_F_NEXT; /* set flag even if tgt not busy */ in mdb_tgt_next()
1396 return (tgt_request_continue(t, tsp, 0, t->t_ops->t_step)); in mdb_tgt_next()
1400 mdb_tgt_continue(mdb_tgt_t *t, mdb_tgt_status_t *tsp) in mdb_tgt_continue() argument
1402 return (tgt_request_continue(t, tsp, MDB_TGT_F_CONT, t->t_ops->t_cont)); in mdb_tgt_continue()
1406 mdb_tgt_signal(mdb_tgt_t *t, int sig) in mdb_tgt_signal() argument
1408 return (t->t_ops->t_signal(t, sig)); in mdb_tgt_signal()
1412 mdb_tgt_vespec_data(mdb_tgt_t *t, int vid) in mdb_tgt_vespec_data() argument
1414 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, vid); in mdb_tgt_vespec_data()
1431 mdb_tgt_vespec_info(mdb_tgt_t *t, int vid, mdb_tgt_spec_desc_t *sp, in mdb_tgt_vespec_info() argument
1434 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, vid); in mdb_tgt_vespec_info()
1461 return (sep->se_ops->se_info(t, sep, vep, sp, buf, nbytes)); in mdb_tgt_vespec_info()
1484 mdb_tgt_vespec_iter(mdb_tgt_t *t, mdb_tgt_vespec_f *func, void *p) in mdb_tgt_vespec_iter() argument
1490 uint_t vecnt = t->t_vecnt; in mdb_tgt_vespec_iter()
1496 for (sep = mdb_list_next(&t->t_active); sep; sep = mdb_list_next(sep)) { in mdb_tgt_vespec_iter()
1498 mdb_tgt_vespec_hold(t, vep); in mdb_tgt_vespec_iter()
1504 for (sep = mdb_list_next(&t->t_idle); sep; sep = mdb_list_next(sep)) { in mdb_tgt_vespec_iter()
1506 mdb_tgt_vespec_hold(t, vep); in mdb_tgt_vespec_iter()
1521 if (func(t, p, (*vepp)->ve_id, (*vepp)->ve_data) != 0) in mdb_tgt_vespec_iter()
1526 mdb_tgt_vespec_rele(t, *vepp); in mdb_tgt_vespec_iter()
1541 mdb_tgt_vespec_modify(mdb_tgt_t *t, int id, uint_t flags, in mdb_tgt_vespec_modify() argument
1544 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, id); in mdb_tgt_vespec_modify()
1556 (void) mdb_tgt_vespec_disable(t, id); in mdb_tgt_vespec_modify()
1558 (void) mdb_tgt_vespec_enable(t, id); in mdb_tgt_vespec_modify()
1602 (void) mdb_tgt_vespec_delete(t, id); in mdb_tgt_vespec_modify()
1612 mdb_tgt_vespec_enable(mdb_tgt_t *t, int id) in mdb_tgt_vespec_enable() argument
1614 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, id); in mdb_tgt_vespec_enable()
1622 if (mdb_tgt_sespec_activate_one(t, vep->ve_se) < 0) in mdb_tgt_vespec_enable()
1636 mdb_tgt_vespec_disable(mdb_tgt_t *t, int id) in mdb_tgt_vespec_disable() argument
1638 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, id); in mdb_tgt_vespec_disable()
1650 sep = mdb_tgt_sespec_insert(t, vep->ve_se->se_ops, &t->t_idle); in mdb_tgt_vespec_disable()
1653 mdb_tgt_sespec_rele(t, vep->ve_se); in mdb_tgt_vespec_disable()
1656 mdb_tgt_sespec_hold(t, sep); in mdb_tgt_vespec_disable()
1662 mdb_tgt_sespec_idle_one(t, vep->ve_se, EMDB_SPECDIS); in mdb_tgt_vespec_disable()
1677 mdb_tgt_vespec_delete(mdb_tgt_t *t, int id) in mdb_tgt_vespec_delete() argument
1679 mdb_vespec_t *vep = mdb_tgt_vespec_lookup(t, id); in mdb_tgt_vespec_delete()
1688 mdb_tgt_vespec_rele(t, vep); in mdb_tgt_vespec_delete()
1693 mdb_tgt_add_vbrkpt(mdb_tgt_t *t, uintptr_t addr, in mdb_tgt_add_vbrkpt() argument
1696 return (t->t_ops->t_add_vbrkpt(t, addr, spec_flags, func, p)); in mdb_tgt_add_vbrkpt()
1700 mdb_tgt_add_sbrkpt(mdb_tgt_t *t, const char *symbol, in mdb_tgt_add_sbrkpt() argument
1703 return (t->t_ops->t_add_sbrkpt(t, symbol, spec_flags, func, p)); in mdb_tgt_add_sbrkpt()
1707 mdb_tgt_add_pwapt(mdb_tgt_t *t, physaddr_t pa, size_t n, uint_t flags, in mdb_tgt_add_pwapt() argument
1720 return (t->t_ops->t_add_pwapt(t, pa, n, flags, spec_flags, func, p)); in mdb_tgt_add_pwapt()
1724 mdb_tgt_add_vwapt(mdb_tgt_t *t, uintptr_t va, size_t n, uint_t flags, in mdb_tgt_add_vwapt() argument
1737 return (t->t_ops->t_add_vwapt(t, va, n, flags, spec_flags, func, p)); in mdb_tgt_add_vwapt()
1741 mdb_tgt_add_iowapt(mdb_tgt_t *t, uintptr_t addr, size_t n, uint_t flags, in mdb_tgt_add_iowapt() argument
1754 return (t->t_ops->t_add_iowapt(t, addr, n, flags, spec_flags, func, p)); in mdb_tgt_add_iowapt()
1758 mdb_tgt_add_sysenter(mdb_tgt_t *t, int sysnum, in mdb_tgt_add_sysenter() argument
1761 return (t->t_ops->t_add_sysenter(t, sysnum, spec_flags, func, p)); in mdb_tgt_add_sysenter()
1765 mdb_tgt_add_sysexit(mdb_tgt_t *t, int sysnum, in mdb_tgt_add_sysexit() argument
1768 return (t->t_ops->t_add_sysexit(t, sysnum, spec_flags, func, p)); in mdb_tgt_add_sysexit()
1772 mdb_tgt_add_signal(mdb_tgt_t *t, int sig, in mdb_tgt_add_signal() argument
1775 return (t->t_ops->t_add_signal(t, sig, spec_flags, func, p)); in mdb_tgt_add_signal()
1779 mdb_tgt_add_fault(mdb_tgt_t *t, int flt, in mdb_tgt_add_fault() argument
1782 return (t->t_ops->t_add_fault(t, flt, spec_flags, func, p)); in mdb_tgt_add_fault()
1786 mdb_tgt_getareg(mdb_tgt_t *t, mdb_tgt_tid_t tid, in mdb_tgt_getareg() argument
1789 return (t->t_ops->t_getareg(t, tid, rname, rp)); in mdb_tgt_getareg()
1793 mdb_tgt_putareg(mdb_tgt_t *t, mdb_tgt_tid_t tid, in mdb_tgt_putareg() argument
1796 return (t->t_ops->t_putareg(t, tid, rname, r)); in mdb_tgt_putareg()
1800 mdb_tgt_thread_name(mdb_tgt_t *t, mdb_tgt_tid_t tid, char *buf, size_t bufsize) in mdb_tgt_thread_name() argument
1802 return (t->t_ops->t_thread_name(t, tid, buf, bufsize)); in mdb_tgt_thread_name()
1806 mdb_tgt_stack_iter(mdb_tgt_t *t, const mdb_tgt_gregset_t *gregs, in mdb_tgt_stack_iter() argument
1809 return (t->t_ops->t_stack_iter(t, gregs, cb, p)); in mdb_tgt_stack_iter()
1813 mdb_tgt_xdata_iter(mdb_tgt_t *t, mdb_tgt_xdata_f *func, void *private) in mdb_tgt_xdata_iter() argument
1817 for (xdp = mdb_list_next(&t->t_xdlist); xdp; xdp = mdb_list_next(xdp)) { in mdb_tgt_xdata_iter()
1819 xdp->xd_copy(t, NULL, 0)) != 0) in mdb_tgt_xdata_iter()
1827 mdb_tgt_getxdata(mdb_tgt_t *t, const char *name, void *buf, size_t nbytes) in mdb_tgt_getxdata() argument
1831 for (xdp = mdb_list_next(&t->t_xdlist); xdp; xdp = mdb_list_next(xdp)) { in mdb_tgt_getxdata()
1833 return (xdp->xd_copy(t, buf, nbytes)); in mdb_tgt_getxdata()
1859 mdb_tgt_xdata_insert(mdb_tgt_t *t, const char *name, const char *desc, in mdb_tgt_xdata_insert() argument
1864 for (xdp = mdb_list_next(&t->t_xdlist); xdp; xdp = mdb_list_next(xdp)) { in mdb_tgt_xdata_insert()
1870 mdb_list_append(&t->t_xdlist, xdp); in mdb_tgt_xdata_insert()
1880 mdb_tgt_xdata_delete(mdb_tgt_t *t, const char *name) in mdb_tgt_xdata_delete() argument
1884 for (xdp = mdb_list_next(&t->t_xdlist); xdp; xdp = mdb_list_next(xdp)) { in mdb_tgt_xdata_delete()
1886 mdb_list_delete(&t->t_xdlist, xdp); in mdb_tgt_xdata_delete()
1923 GElf_Xword d = 0, t = 0; in mdb_tgt_elf_export() local
1953 t = text->p_memsz; in mdb_tgt_elf_export()
1969 mdb_nv_set_value(v, t); in mdb_tgt_elf_export()
1974 mdb_tgt_sespec_hold(mdb_tgt_t *t, mdb_sespec_t *sep) in mdb_tgt_sespec_hold() argument
1981 mdb_tgt_sespec_rele(mdb_tgt_t *t, mdb_sespec_t *sep) in mdb_tgt_sespec_rele() argument
1990 sep->se_ops->se_dtor(t, sep); in mdb_tgt_sespec_rele()
1991 mdb_list_delete(&t->t_active, sep); in mdb_tgt_sespec_rele()
1993 mdb_list_delete(&t->t_idle, sep); in mdb_tgt_sespec_rele()
2000 mdb_tgt_sespec_insert(mdb_tgt_t *t, const mdb_se_ops_t *ops, mdb_list_t *list) in mdb_tgt_sespec_insert() argument
2004 if (list == &t->t_active) in mdb_tgt_sespec_insert()
2015 mdb_tgt_sespec_lookup_active(mdb_tgt_t *t, const mdb_se_ops_t *ops, void *args) in mdb_tgt_sespec_lookup_active() argument
2019 for (sep = mdb_list_next(&t->t_active); sep; sep = mdb_list_next(sep)) { in mdb_tgt_sespec_lookup_active()
2020 if (sep->se_ops == ops && sep->se_ops->se_secmp(t, sep, args)) in mdb_tgt_sespec_lookup_active()
2028 mdb_tgt_sespec_lookup_idle(mdb_tgt_t *t, const mdb_se_ops_t *ops, void *args) in mdb_tgt_sespec_lookup_idle() argument
2032 for (sep = mdb_list_next(&t->t_idle); sep; sep = mdb_list_next(sep)) { in mdb_tgt_sespec_lookup_idle()
2033 if (sep->se_ops == ops && sep->se_ops->se_vecmp(t, in mdb_tgt_sespec_lookup_idle()
2043 mdb_tgt_vespec_hold(mdb_tgt_t *t, mdb_vespec_t *vep) in mdb_tgt_vespec_hold() argument
2050 mdb_tgt_vespec_rele(mdb_tgt_t *t, mdb_vespec_t *vep) in mdb_tgt_vespec_rele() argument
2060 mdb_tgt_sespec_rele(t, vep->ve_se); in mdb_tgt_vespec_rele()
2068 if (vep->ve_id > 0 && t->t_vepos == vep->ve_id + 1) in mdb_tgt_vespec_rele()
2069 t->t_vepos = vep->ve_id; in mdb_tgt_vespec_rele()
2070 else if (vep->ve_id < 0 && t->t_veneg == -vep->ve_id + 1) in mdb_tgt_vespec_rele()
2071 t->t_veneg = -vep->ve_id; in mdb_tgt_vespec_rele()
2080 ASSERT(t->t_vecnt != 0); in mdb_tgt_vespec_rele()
2081 t->t_vecnt--; in mdb_tgt_vespec_rele()
2086 mdb_tgt_vespec_insert(mdb_tgt_t *t, const mdb_se_ops_t *ops, int flags, in mdb_tgt_vespec_insert() argument
2114 sep = mdb_tgt_sespec_insert(t, ops, &t->t_idle); in mdb_tgt_vespec_insert()
2115 else if ((sep = mdb_tgt_sespec_lookup_active(t, ops, args)) == NULL && in mdb_tgt_vespec_insert()
2116 (sep = mdb_tgt_sespec_lookup_idle(t, ops, args)) == NULL) in mdb_tgt_vespec_insert()
2117 sep = mdb_tgt_sespec_insert(t, ops, &t->t_active); in mdb_tgt_vespec_insert()
2125 seqp = &t->t_veneg; in mdb_tgt_vespec_insert()
2128 seqp = &t->t_vepos; in mdb_tgt_vespec_insert()
2134 while (mdb_tgt_vespec_lookup(t, id * mult) != NULL) in mdb_tgt_vespec_insert()
2148 mdb_tgt_sespec_hold(t, sep); in mdb_tgt_vespec_insert()
2150 mdb_tgt_vespec_hold(t, vep); in mdb_tgt_vespec_insert()
2151 t->t_vecnt++; in mdb_tgt_vespec_insert()
2159 sep->se_ops->se_ctor(t, sep, vep->ve_args) == -1) { in mdb_tgt_vespec_insert()
2161 mdb_list_delete(&t->t_active, sep); in mdb_tgt_vespec_insert()
2162 mdb_list_append(&t->t_idle, sep); in mdb_tgt_vespec_insert()
2175 t->t_status.st_state == MDB_TGT_RUNNING) in mdb_tgt_vespec_insert()
2176 mdb_tgt_sespec_arm_one(t, sep); in mdb_tgt_vespec_insert()
2189 mdb_tgt_vespec_lookup(mdb_tgt_t *t, int vid) in mdb_tgt_vespec_lookup() argument
2197 for (sep = mdb_list_next(&t->t_active); sep; sep = mdb_list_next(sep)) { in mdb_tgt_vespec_lookup()
2205 for (sep = mdb_list_next(&t->t_idle); sep; sep = mdb_list_next(sep)) { in mdb_tgt_vespec_lookup()
2225 no_se_f(mdb_tgt_t *t, int vid, void *data) in no_se_f() argument
2232 no_se_dtor(mdb_tgt_t *t, mdb_sespec_t *sep) in no_se_dtor() argument
2239 no_se_secmp(mdb_tgt_t *t, mdb_sespec_t *sep, void *args) in no_se_secmp() argument
2246 no_se_vecmp(mdb_tgt_t *t, mdb_vespec_t *vep, void *args) in no_se_vecmp() argument
2253 no_se_arm(mdb_tgt_t *t, mdb_sespec_t *sep) in no_se_arm() argument
2260 no_se_disarm(mdb_tgt_t *t, mdb_sespec_t *sep) in no_se_disarm() argument
2267 no_se_cont(mdb_tgt_t *t, mdb_sespec_t *sep, mdb_tgt_status_t *tsp) in no_se_cont() argument
2269 if (tsp != &t->t_status) in no_se_cont()
2270 bcopy(&t->t_status, tsp, sizeof (mdb_tgt_status_t)); in no_se_cont()
2276 mdb_tgt_register_dcmds(mdb_tgt_t *t, const mdb_dcmd_t *dcp, int flags) in mdb_tgt_register_dcmds() argument
2281 if (mdb_module_add_dcmd(t->t_module, dcp, flags) == -1) { in mdb_tgt_register_dcmds()
2291 mdb_tgt_register_walkers(mdb_tgt_t *t, const mdb_walker_t *wp, int flags) in mdb_tgt_register_walkers() argument
2296 if (mdb_module_add_walker(t->t_module, wp, flags) == -1) { in mdb_tgt_register_walkers()
2306 mdb_tgt_register_regvars(mdb_tgt_t *t, const mdb_tgt_regdesc_t *rdp, in mdb_tgt_register_regvars() argument
2317 (uintptr_t)t, MDB_NV_PERSIST | flags); in mdb_tgt_register_regvars()