Lines Matching refs:mod

114 	mdb_module_t *mod;  in mdb_module_create()  local
116 mod = mdb_zalloc(sizeof (mdb_module_t), UM_SLEEP); in mdb_module_create()
117 mod->mod_info = mdb_alloc(sizeof (mdb_modinfo_t), UM_SLEEP); in mdb_module_create()
119 (void) mdb_nv_create(&mod->mod_dcmds, UM_SLEEP); in mdb_module_create()
120 (void) mdb_nv_create(&mod->mod_walkers, UM_SLEEP); in mdb_module_create()
122 mod->mod_name = strdup(name); in mdb_module_create()
123 mdb.m_lmod = mod; /* Mark module as currently loading */ in mdb_module_create()
127 mod->mod_hdl = dlmopen(LM_ID_BASE, fname, RTLD_NOW | dlmode); in mdb_module_create()
129 if (mod->mod_hdl == NULL) { in mdb_module_create()
134 mod->mod_init = (const mdb_modinfo_t *(*)(void)) in mdb_module_create()
135 dlsym(mod->mod_hdl, "_mdb_init"); in mdb_module_create()
137 mod->mod_fini = (void (*)(void)) in mdb_module_create()
138 dlsym(mod->mod_hdl, "_mdb_fini"); in mdb_module_create()
140 mod->mod_tgt_ctor = (mdb_tgt_ctor_f *) in mdb_module_create()
141 dlsym(mod->mod_hdl, "_mdb_tgt_create"); in mdb_module_create()
143 mod->mod_dis_ctor = (mdb_dis_ctor_f *) in mdb_module_create()
144 dlsym(mod->mod_hdl, "_mdb_dis_create"); in mdb_module_create()
147 mod->mod_ctfp = mdb_ctf_open(fname, NULL); in mdb_module_create()
156 mod->mod_init = mdb_ks_init; in mdb_module_create()
159 mod->mod_init = builtin_init; in mdb_module_create()
162 if (mod->mod_init == NULL) { in mdb_module_create()
167 if ((info = mod->mod_init()) == NULL) { in mdb_module_create()
197 bcopy(info, mod->mod_info, sizeof (mdb_modinfo_t)); in mdb_module_create()
198 if (mod->mod_info->mi_dcmds == NULL) in mdb_module_create()
199 mod->mod_info->mi_dcmds = empty_dcmd_list; in mdb_module_create()
200 if (mod->mod_info->mi_walkers == NULL) in mdb_module_create()
201 mod->mod_info->mi_walkers = empty_walk_list; in mdb_module_create()
223 for (dcop = (mdb_dcmd_v3_t *)&mod->mod_info->mi_dcmds[0]; in mdb_module_create()
229 for (dcop = (mdb_dcmd_v3_t *)&mod->mod_info->mi_dcmds[0]; in mdb_module_create()
238 mod->mod_info->mi_dcmds = dctp; in mdb_module_create()
245 for (dcp = &mod->mod_info->mi_dcmds[0]; dcp->dc_name != NULL; dcp++) { in mdb_module_create()
265 for (wp = &mod->mod_info->mi_walkers[0]; wp->walk_name != NULL; wp++) { in mdb_module_create()
289 (void) mdb_nv_insert(&mdb.m_modules, mod->mod_name, NULL, in mdb_module_create()
290 (uintptr_t)mod, MDB_NV_RDONLY|MDB_NV_EXTNAME); in mdb_module_create()
292 for (dcp = &mod->mod_info->mi_dcmds[0]; dcp->dc_name != NULL; dcp++) { in mdb_module_create()
293 if (mdb_module_add_dcmd(mod, dcp, mode) == -1) in mdb_module_create()
297 for (wp = &mod->mod_info->mi_walkers[0]; wp->walk_name != NULL; wp++) { in mdb_module_create()
298 if (mdb_module_add_walker(mod, wp, mode) == -1) in mdb_module_create()
308 mdb.m_mtail->mod_next = mod; in mdb_module_create()
309 mod->mod_prev = mdb.m_mtail; in mdb_module_create()
310 mdb.m_mtail = mod; in mdb_module_create()
313 mdb.m_mtail = mdb.m_mhead = mod; in mdb_module_create()
318 *mpp = mod; in mdb_module_create()
322 mdb_whatis_unregister_module(mod); in mdb_module_create()
324 if (mod->mod_ctfp != NULL) in mdb_module_create()
325 ctf_close(mod->mod_ctfp); in mdb_module_create()
327 if (mod->mod_hdl != NULL) in mdb_module_create()
328 (void) dlclose(mod->mod_hdl); in mdb_module_create()
330 mdb_nv_destroy(&mod->mod_dcmds); in mdb_module_create()
331 mdb_nv_destroy(&mod->mod_walkers); in mdb_module_create()
333 strfree((char *)mod->mod_name); in mdb_module_create()
334 mdb_free(mod->mod_info, sizeof (mdb_modinfo_t)); in mdb_module_create()
335 mdb_free(mod, sizeof (mdb_module_t)); in mdb_module_create()
355 mdb_module_t *mod; in mdb_module_unload_common() local
361 mod = mdb_nv_get_cookie(v); in mdb_module_unload_common()
363 if (mod == &mdb.m_rmod || mod->mod_hdl == NULL) in mdb_module_unload_common()
368 if (mod->mod_fini != NULL) { in mdb_module_unload_common()
370 mod->mod_fini(); in mdb_module_unload_common()
373 mdb_whatis_unregister_module(mod); in mdb_module_unload_common()
375 if (mod->mod_ctfp != NULL) in mdb_module_unload_common()
376 ctf_close(mod->mod_ctfp); in mdb_module_unload_common()
378 if (mod->mod_cb != NULL) in mdb_module_unload_common()
379 mdb_callb_remove_by_mod(mod); in mdb_module_unload_common()
381 if (mod->mod_prev == NULL) { in mdb_module_unload_common()
382 ASSERT(mdb.m_mhead == mod); in mdb_module_unload_common()
383 mdb.m_mhead = mod->mod_next; in mdb_module_unload_common()
385 mod->mod_prev->mod_next = mod->mod_next; in mdb_module_unload_common()
387 if (mod->mod_next == NULL) { in mdb_module_unload_common()
388 ASSERT(mdb.m_mtail == mod); in mdb_module_unload_common()
389 mdb.m_mtail = mod->mod_prev; in mdb_module_unload_common()
391 mod->mod_next->mod_prev = mod->mod_prev; in mdb_module_unload_common()
393 while (mdb_nv_size(&mod->mod_walkers) != 0) { in mdb_module_unload_common()
394 mdb_nv_rewind(&mod->mod_walkers); in mdb_module_unload_common()
395 v = mdb_nv_peek(&mod->mod_walkers); in mdb_module_unload_common()
396 (void) mdb_module_remove_walker(mod, mdb_nv_get_name(v)); in mdb_module_unload_common()
399 while (mdb_nv_size(&mod->mod_dcmds) != 0) { in mdb_module_unload_common()
400 mdb_nv_rewind(&mod->mod_dcmds); in mdb_module_unload_common()
401 v = mdb_nv_peek(&mod->mod_dcmds); in mdb_module_unload_common()
402 (void) mdb_module_remove_dcmd(mod, mdb_nv_get_name(v)); in mdb_module_unload_common()
409 (void) dlclose(mod->mod_hdl); in mdb_module_unload_common()
411 mdb_nv_destroy(&mod->mod_walkers); in mdb_module_unload_common()
412 mdb_nv_destroy(&mod->mod_dcmds); in mdb_module_unload_common()
414 strfree((char *)mod->mod_name); in mdb_module_unload_common()
416 if (mod->mod_info->mi_dvers < 4) { in mdb_module_unload_common()
419 for (dcp = &mod->mod_info->mi_dcmds[0]; dcp->dc_name != NULL; in mdb_module_unload_common()
423 mdb_free((void *)mod->mod_info->mi_dcmds, in mdb_module_unload_common()
427 mdb_free(mod->mod_info, sizeof (mdb_modinfo_t)); in mdb_module_unload_common()
428 mdb_free(mod, sizeof (mdb_module_t)); in mdb_module_unload_common()
434 mdb_module_add_dcmd(mdb_module_t *mod, const mdb_dcmd_t *dcp, int flags) in mdb_module_add_dcmd() argument
436 mdb_var_t *v = mdb_nv_lookup(&mod->mod_dcmds, dcp->dc_name); in mdb_module_add_dcmd()
454 idcp->idc_modp = mod; in mdb_module_add_dcmd()
456 v = mdb_nv_insert(&mod->mod_dcmds, dcp->dc_name, NULL, in mdb_module_add_dcmd()
464 mod->mod_name, idcp->idc_name); in mdb_module_add_dcmd()
470 mdb_module_remove_dcmd(mdb_module_t *mod, const char *dname) in mdb_module_remove_dcmd() argument
472 mdb_var_t *v = mdb_nv_lookup(&mod->mod_dcmds, dname); in mdb_module_remove_dcmd()
479 mdb_dprintf(MDB_DBG_DCMD, "removed dcmd %s`%s\n", mod->mod_name, dname); in mdb_module_remove_dcmd()
498 mdb_nv_remove(&mod->mod_dcmds, v); in mdb_module_remove_dcmd()
519 mdb_module_add_walker(mdb_module_t *mod, const mdb_walker_t *wp, int flags) in mdb_module_add_walker() argument
521 mdb_var_t *v = mdb_nv_lookup(&mod->mod_walkers, wp->walk_name); in mdb_module_add_walker()
542 iwp->iwlk_modp = mod; in mdb_module_add_walker()
549 v = mdb_nv_insert(&mod->mod_walkers, wp->walk_name, NULL, in mdb_module_add_walker()
557 mod->mod_name, iwp->iwlk_name); in mdb_module_add_walker()
563 mdb_module_remove_walker(mdb_module_t *mod, const char *wname) in mdb_module_remove_walker() argument
565 mdb_var_t *v = mdb_nv_lookup(&mod->mod_walkers, wname); in mdb_module_remove_walker()
571 mdb_dprintf(MDB_DBG_WALK, "removed walk %s`%s\n", mod->mod_name, wname); in mdb_module_remove_walker()
575 mdb_nv_remove(&mod->mod_walkers, v); in mdb_module_remove_walker()
586 mdb_module_t *mod, *pmod; in mdb_module_unload_all() local
593 for (mod = mdb.m_mtail; mod != NULL; mod = pmod) { in mdb_module_unload_all()
594 pmod = mod->mod_prev; in mdb_module_unload_all()
595 (void) mdb_module_unload(mod->mod_name, mode); in mdb_module_unload_all()