4703 pt_lwp_getregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prgregset_t gregs)
4704 {
4705 if (t->t_pshandle != NULL) {
4706 return (ptl_err(Plwp_getregs(t->t_pshandle,
4707 (lwpid_t)tid, gregs)));
4708 }
4709 return (set_errno(EMDB_NOPROC));
4710 }
4711
4712 /*ARGSUSED*/
4713 static int
4714 pt_lwp_setregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prgregset_t gregs)
4715 {
4716 if (t->t_pshandle != NULL) {
4717 return (ptl_err(Plwp_setregs(t->t_pshandle,
4718 (lwpid_t)tid, gregs)));
4719 }
4720 return (set_errno(EMDB_NOPROC));
4721 }
4722
4723 #ifdef __sparc
4724
4725 /*ARGSUSED*/
4726 static int
4727 pt_lwp_getxregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prxregset_t *xregs)
4728 {
4729 if (t->t_pshandle != NULL) {
4730 return (ptl_err(Plwp_getxregs(t->t_pshandle,
4731 (lwpid_t)tid, xregs)));
4732 }
4733 return (set_errno(EMDB_NOPROC));
4734 }
4735
4736 /*ARGSUSED*/
4737 static int
4738 pt_lwp_setxregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4739 const prxregset_t *xregs)
4740 {
4741 if (t->t_pshandle != NULL) {
4742 return (ptl_err(Plwp_setxregs(t->t_pshandle,
4743 (lwpid_t)tid, xregs)));
4744 }
4745 return (set_errno(EMDB_NOPROC));
4746 }
4747
4748 #endif /* __sparc */
4749
4750 /*ARGSUSED*/
4751 static int
4752 pt_lwp_getfpregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4753 prfpregset_t *fpregs)
4754 {
4755 if (t->t_pshandle != NULL) {
4756 return (ptl_err(Plwp_getfpregs(t->t_pshandle,
4757 (lwpid_t)tid, fpregs)));
4758 }
4759 return (set_errno(EMDB_NOPROC));
4760 }
4761
4762 /*ARGSUSED*/
4763 static int
4764 pt_lwp_setfpregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4765 const prfpregset_t *fpregs)
4766 {
4767 if (t->t_pshandle != NULL) {
4768 return (ptl_err(Plwp_setfpregs(t->t_pshandle,
4769 (lwpid_t)tid, fpregs)));
4770 }
4771 return (set_errno(EMDB_NOPROC));
4772 }
4773
4774 static const pt_ptl_ops_t proc_lwp_ops = {
4775 (int (*)()) mdb_tgt_nop,
4776 (void (*)()) mdb_tgt_nop,
4777 pt_lwp_tid,
4778 pt_lwp_iter,
4779 pt_lwp_getregs,
4780 pt_lwp_setregs,
4781 #ifdef __sparc
4782 pt_lwp_getxregs,
4783 pt_lwp_setxregs,
4784 #endif
4785 pt_lwp_getfpregs,
4786 pt_lwp_setfpregs
4787 };
4788
4789 static int
4790 pt_tdb_ctor(mdb_tgt_t *t)
4791 {
4792 pt_data_t *pt = t->t_data;
4793 td_thragent_t *tap;
4794 td_err_e err;
4795
4796 if ((err = pt->p_tdb_ops->td_ta_new(t->t_pshandle, &tap)) != TD_OK)
4797 return (set_errno(tdb_to_errno(err)));
4798
4799 pt->p_ptl_hdl = tap;
4800 return (0);
4801 }
4802
4803 static void
4804 pt_tdb_dtor(mdb_tgt_t *t, void *tap)
|
4703 pt_lwp_getregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prgregset_t gregs)
4704 {
4705 if (t->t_pshandle != NULL) {
4706 return (ptl_err(Plwp_getregs(t->t_pshandle,
4707 (lwpid_t)tid, gregs)));
4708 }
4709 return (set_errno(EMDB_NOPROC));
4710 }
4711
4712 /*ARGSUSED*/
4713 static int
4714 pt_lwp_setregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prgregset_t gregs)
4715 {
4716 if (t->t_pshandle != NULL) {
4717 return (ptl_err(Plwp_setregs(t->t_pshandle,
4718 (lwpid_t)tid, gregs)));
4719 }
4720 return (set_errno(EMDB_NOPROC));
4721 }
4722
4723 /*ARGSUSED*/
4724 static int
4725 pt_lwp_getxregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid, prxregset_t *xregs)
4726 {
4727 if (t->t_pshandle != NULL) {
4728 return (ptl_err(Plwp_getxregs(t->t_pshandle,
4729 (lwpid_t)tid, xregs)));
4730 }
4731 return (set_errno(EMDB_NOPROC));
4732 }
4733
4734 /*ARGSUSED*/
4735 static int
4736 pt_lwp_setxregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4737 const prxregset_t *xregs)
4738 {
4739 if (t->t_pshandle != NULL) {
4740 return (ptl_err(Plwp_setxregs(t->t_pshandle,
4741 (lwpid_t)tid, xregs)));
4742 }
4743 return (set_errno(EMDB_NOPROC));
4744 }
4745
4746 /*ARGSUSED*/
4747 static int
4748 pt_lwp_getfpregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4749 prfpregset_t *fpregs)
4750 {
4751 if (t->t_pshandle != NULL) {
4752 return (ptl_err(Plwp_getfpregs(t->t_pshandle,
4753 (lwpid_t)tid, fpregs)));
4754 }
4755 return (set_errno(EMDB_NOPROC));
4756 }
4757
4758 /*ARGSUSED*/
4759 static int
4760 pt_lwp_setfpregs(mdb_tgt_t *t, void *tap, mdb_tgt_tid_t tid,
4761 const prfpregset_t *fpregs)
4762 {
4763 if (t->t_pshandle != NULL) {
4764 return (ptl_err(Plwp_setfpregs(t->t_pshandle,
4765 (lwpid_t)tid, fpregs)));
4766 }
4767 return (set_errno(EMDB_NOPROC));
4768 }
4769
4770 static const pt_ptl_ops_t proc_lwp_ops = {
4771 (int (*)()) mdb_tgt_nop,
4772 (void (*)()) mdb_tgt_nop,
4773 pt_lwp_tid,
4774 pt_lwp_iter,
4775 pt_lwp_getregs,
4776 pt_lwp_setregs,
4777 pt_lwp_getxregs,
4778 pt_lwp_setxregs,
4779 pt_lwp_getfpregs,
4780 pt_lwp_setfpregs
4781 };
4782
4783 static int
4784 pt_tdb_ctor(mdb_tgt_t *t)
4785 {
4786 pt_data_t *pt = t->t_data;
4787 td_thragent_t *tap;
4788 td_err_e err;
4789
4790 if ((err = pt->p_tdb_ops->td_ta_new(t->t_pshandle, &tap)) != TD_OK)
4791 return (set_errno(tdb_to_errno(err)));
4792
4793 pt->p_ptl_hdl = tap;
4794 return (0);
4795 }
4796
4797 static void
4798 pt_tdb_dtor(mdb_tgt_t *t, void *tap)
|