void cmd_dimm_destroy(fmd_hdl_t *hdl, cmd_dimm_t *dimm) { int i; cmd_mq_t *q; for (i = 0; i < CMD_MAX_CKWDS; i++) { while ((q = cmd_list_next(&dimm->mq_root[i])) != NULL) { if (q->mq_serdnm != NULL) { if (fmd_serd_exists(hdl, q->mq_serdnm)) { fmd_serd_destroy(hdl, q->mq_serdnm); } fmd_hdl_strfree(hdl, q->mq_serdnm); q->mq_serdnm = NULL; } cmd_list_delete(&dimm->mq_root[i], q); fmd_hdl_free(hdl, q, sizeof (cmd_mq_t)); } } fmd_stat_destroy(hdl, 1, &(dimm->dimm_retstat)); cmd_dimm_free(hdl, dimm, FMD_B_TRUE); }
int etm_xport_fini(fmd_hdl_t *hdl) { fmd_hdl_debug(hdl, "info: xport finalizing\n"); if (use_vldc && (etm_xport_vldc_conn != NULL)) { (void) etm_xport_close(hdl, etm_xport_vldc_conn); etm_xport_vldc_conn = NULL; } /* free any long standing properties from FMD */ fmd_prop_free_string(hdl, etm_xport_addrs); /* cleanup the intermediate read buffer */ if (etm_xport_irb_tail != etm_xport_irb_head) { fmd_hdl_debug(hdl, "warning: xport %d bytes stale data\n", (int)(etm_xport_irb_tail - etm_xport_irb_head)); } fmd_hdl_free(hdl, etm_xport_irb_area, 2 * etm_xport_irb_mtu_sz); etm_xport_irb_area = NULL; etm_xport_irb_head = NULL; etm_xport_irb_tail = NULL; etm_xport_irb_mtu_sz = 0; /* cleanup statistics from FMD */ (void) fmd_stat_destroy(hdl, sizeof (etm_xport_stats) / sizeof (fmd_stat_t), (fmd_stat_t *)&etm_xport_stats); fmd_hdl_debug(hdl, "info: xport finalized ok\n"); return (0); } /* etm_xport_fini() */
void gmem_dimm_destroy(fmd_hdl_t *hdl, gmem_dimm_t *dimm) { fmd_stat_destroy(hdl, 1, &(dimm->dimm_retstat)); gmem_dimm_free(hdl, dimm, FMD_B_TRUE); }