Lines Matching refs:rap

113 rd_get_dyns(rd_agent_t *rap, psaddr_t addr, void **dynpp, size_t *dynpp_sz)
115 if (rap->rd_helper.rh_ops != NULL)
116 return (rap->rd_helper.rh_ops->rho_get_dyns(
117 rap->rd_helper.rh_data, addr, dynpp, dynpp_sz));
120 if (rap->rd_dmodel == PR_MODEL_LP64)
121 return (_rd_get_dyns64(rap,
125 return (_rd_get_dyns32(rap,
130 rd_reset(struct rd_agent *rap)
134 RDAGLOCK(rap);
136 rap->rd_flags = 0;
142 if (ps_pdmodel(rap->rd_psp, &rap->rd_dmodel) != PS_OK) {
144 RDAGUNLOCK(rap);
148 if (rap->rd_dmodel == PR_MODEL_LP64)
149 err = _rd_reset64(rap);
152 err = _rd_reset32(rap);
154 RDAGUNLOCK(rap);
162 rd_agent_t *rap;
165 if ((rap = (rd_agent_t *)calloc(sizeof (rd_agent_t), 1)) == NULL)
168 rap->rd_psp = php;
169 (void) mutex_init(&rap->rd_mutex, USYNC_THREAD, 0);
170 if (rd_reset(rap) != RD_OK) {
171 if (rap->rd_helper.rh_dlhandle != NULL) {
172 rap->rd_helper.rh_ops->rho_fini(rap->rd_helper.rh_data);
173 (void) dlclose(rap->rd_helper.rh_dlhandle);
175 free(rap);
180 return (rap);
185 rd_delete(rd_agent_t *rap)
187 LOG(ps_plog(MSG_ORIG(MSG_DB_RDDELETE), rap));
188 if (rap->rd_helper.rh_dlhandle != NULL) {
189 rap->rd_helper.rh_ops->rho_fini(rap->rd_helper.rh_data);
190 (void) dlclose(rap->rd_helper.rh_dlhandle);
192 free(rap);
197 rd_loadobj_iter(rd_agent_t *rap, rl_iter_f *cb, void *client_data)
201 RDAGLOCK(rap);
204 if (rap->rd_dmodel == PR_MODEL_LP64)
205 err = _rd_loadobj_iter64(rap, cb, client_data);
208 err = _rd_loadobj_iter32(rap, cb, client_data);
210 RDAGUNLOCK(rap);
216 rd_plt_resolution(rd_agent_t *rap, psaddr_t pc, lwpid_t lwpid,
220 RDAGLOCK(rap);
222 if (rap->rd_dmodel == PR_MODEL_LP64)
223 err = plt64_resolution(rap, pc, lwpid, pltbase,
227 err = plt32_resolution(rap, pc, lwpid, pltbase,
229 RDAGUNLOCK(rap);
234 rd_event_addr(rd_agent_t *rap, rd_event_e num, rd_notify_t *np)
238 RDAGLOCK(rap);
244 np->u.bptaddr = rap->rd_preinit;
248 np->u.bptaddr = rap->rd_postinit;
252 np->u.bptaddr = rap->rd_dlact;
264 RDAGUNLOCK(rap);
271 rd_event_enable(rd_agent_t *rap, int onoff)
275 RDAGLOCK(rap);
278 if (rap->rd_dmodel == PR_MODEL_LP64)
279 err = _rd_event_enable64(rap, onoff);
282 err = _rd_event_enable32(rap, onoff);
284 RDAGUNLOCK(rap);
290 rd_event_getmsg(rd_agent_t *rap, rd_event_msg_t *emsg)
294 RDAGLOCK(rap);
297 if (rap->rd_dmodel == PR_MODEL_LP64)
298 err = _rd_event_getmsg64(rap, emsg);
301 err = _rd_event_getmsg32(rap, emsg);
303 RDAGUNLOCK(rap);
309 rd_binder_exit_addr(struct rd_agent *rap, const char *bname, psaddr_t *beaddr)
313 if (rap->rd_tbinder) {
314 *beaddr = rap->rd_tbinder;
317 if (ps_pglobal_sym(rap->rd_psp, PS_OBJ_LDSO, bname, &sym) != PS_OK) {
323 rap->rd_tbinder = *beaddr = sym.st_value + sym.st_size - M_BIND_ADJ;
330 rd_objpad_enable(struct rd_agent *rap, size_t padsize)
334 RDAGLOCK(rap);
337 if (rap->rd_dmodel == PR_MODEL_LP64)
338 err = _rd_objpad_enable64(rap, padsize);
341 err = _rd_objpad_enable32(rap, padsize);
343 RDAGUNLOCK(rap);