2371 }
2372
2373 static void
2374 kmt_destroy(mdb_tgt_t *t)
2375 {
2376 kmt_data_t *kmt = t->t_data;
2377 kmt_module_t *km, *pkm;
2378
2379 mdb_nv_destroy(&kmt->kmt_modules);
2380 for (km = mdb_list_prev(&kmt->kmt_modlist); km != NULL; km = pkm) {
2381 pkm = mdb_list_prev(km);
2382 mdb_free(km, sizeof (kmt_module_t));
2383 }
2384
2385 if (!kmt_defbp_lock)
2386 kmt_defbp_destroy_all();
2387
2388 if (kmt->kmt_trapmap != NULL)
2389 mdb_free(kmt->kmt_trapmap, BT_SIZEOFMAP(kmt->kmt_trapmax));
2390
2391 if (kmt != NULL)
2392 mdb_free(kmt, sizeof (kmt_data_t));
2393 }
2394
2395 static const mdb_tgt_ops_t kmt_ops = {
2396 kmt_setflags, /* t_setflags */
2397 (int (*)()) mdb_tgt_notsup, /* t_setcontext */
2398 kmt_activate, /* t_activate */
2399 (void (*)()) mdb_tgt_nop, /* t_deactivate */
2400 kmt_periodic, /* t_periodic */
2401 kmt_destroy, /* t_destroy */
2402 kmt_name, /* t_name */
2403 (const char *(*)()) mdb_conf_isa, /* t_isa */
2404 kmt_platform, /* t_platform */
2405 kmt_uname, /* t_uname */
2406 kmt_dmodel, /* t_dmodel */
2407 (ssize_t (*)()) mdb_tgt_notsup, /* t_aread */
2408 (ssize_t (*)()) mdb_tgt_notsup, /* t_awrite */
2409 kmt_read, /* t_vread */
2410 kmt_write, /* t_vwrite */
2411 kmt_pread, /* t_pread */
|
2371 }
2372
2373 static void
2374 kmt_destroy(mdb_tgt_t *t)
2375 {
2376 kmt_data_t *kmt = t->t_data;
2377 kmt_module_t *km, *pkm;
2378
2379 mdb_nv_destroy(&kmt->kmt_modules);
2380 for (km = mdb_list_prev(&kmt->kmt_modlist); km != NULL; km = pkm) {
2381 pkm = mdb_list_prev(km);
2382 mdb_free(km, sizeof (kmt_module_t));
2383 }
2384
2385 if (!kmt_defbp_lock)
2386 kmt_defbp_destroy_all();
2387
2388 if (kmt->kmt_trapmap != NULL)
2389 mdb_free(kmt->kmt_trapmap, BT_SIZEOFMAP(kmt->kmt_trapmax));
2390
2391 mdb_free(kmt, sizeof (kmt_data_t));
2392 }
2393
2394 static const mdb_tgt_ops_t kmt_ops = {
2395 kmt_setflags, /* t_setflags */
2396 (int (*)()) mdb_tgt_notsup, /* t_setcontext */
2397 kmt_activate, /* t_activate */
2398 (void (*)()) mdb_tgt_nop, /* t_deactivate */
2399 kmt_periodic, /* t_periodic */
2400 kmt_destroy, /* t_destroy */
2401 kmt_name, /* t_name */
2402 (const char *(*)()) mdb_conf_isa, /* t_isa */
2403 kmt_platform, /* t_platform */
2404 kmt_uname, /* t_uname */
2405 kmt_dmodel, /* t_dmodel */
2406 (ssize_t (*)()) mdb_tgt_notsup, /* t_aread */
2407 (ssize_t (*)()) mdb_tgt_notsup, /* t_awrite */
2408 kmt_read, /* t_vread */
2409 kmt_write, /* t_vwrite */
2410 kmt_pread, /* t_pread */
|