/* clean xmap */ void xmap_clean(XMAP *xmap) { if(xmap) { //WARN_LOGGER(xmap->logger, "Ready clean tree[%p]", xmap->tree); mmtree_close(xmap->tree); //WARN_LOGGER(xmap->logger, "Ready clean tree64[%p]", xmap->tree64); mmtree64_close(xmap->tree64); //WARN_LOGGER(xmap->logger, "Ready clean queue[%p]", xmap->queue); mmqueue_clean(xmap->queue); //WARN_LOGGER(xmap->logger, "Ready clean kmap[%p]", xmap->kmap); mmtrie_clean(xmap->kmap); //WARN_LOGGER(xmap->logger, "Ready reset db[%p]", xmap->db); cdb_reset(xmap->db); //WARN_LOGGER(xmap->logger, "Ready clean db[%p]", xmap->db); cdb_clean(xmap->db); if(xmap->diskio.map) { munmap(xmap->diskio.map, xmap->diskio.size); xmap->diskio.map = NULL; } if(xmap->diskio.fd > 0) { close(xmap->diskio.fd); xmap->diskio.fd = 0; } if(xmap->metaio.map) { munmap(xmap->metaio.map, xmap->metaio.size); xmap->metaio.map = NULL; } if(xmap->metaio.fd > 0) { close(xmap->metaio.fd); xmap->metaio.fd = 0; } if(xmap->stateio.map) { munmap(xmap->stateio.map, xmap->stateio.size); xmap->stateio.map = NULL; } if(xmap->stateio.fd > 0) { close(xmap->stateio.fd); xmap->stateio.fd = 0; } //WARN_LOGGER(xmap->logger, "Ready clean mutex[%p]", xmap->mutex); MUTEX_DESTROY(xmap->mutex); MUTEX_DESTROY(xmap->cmutex); LOGGER_CLEAN(xmap->logger); xmm_free(xmap, sizeof(XMAP)); } return ; }
/* Clean evbase */ void evselect_clean(EVBASE *evbase) { if(evbase) { //MUTEX_DESTROY(evbase->mutex); if(evbase->logger)LOGGER_CLEAN(evbase->logger); if(evbase->evlist)free(evbase->evlist); if(evbase->evs)free(evbase->evs); if(evbase->ev_fds)free(evbase->ev_fds); if(evbase->ev_read_fds)free(evbase->ev_read_fds); if(evbase->ev_write_fds)free(evbase->ev_write_fds); xmm_free(evbase, sizeof(EVBASE)); } return ; }
/* * close/clean wtable * */ void wtable_close(WTABLE *w) { if(w) { if(w->statefd > 0) close(w->statefd); w->statefd = 0; if(w->state) munmap(w->state, sizeof(WSTATE)); w->state = NULL; db_clean(w->mdb); mqueue_clean(MQ(w->queue)); mmtrie_clean(w->map); mtree_close(w->mtree); mmtree64_close(w->appmap); LOGGER_CLEAN(w->logger); xmm_free(w, sizeof(WTABLE)); } return ; }
/* clean */ void qindex_clean(QINDEX *qindex) { if(qindex) { if(qindex->state) munmap(qindex->state, sizeof(QSTATE)); if(qindex->qstatefd > 0)close(qindex->qstatefd); if(qindex->db) db_clean(PDB(qindex->db)); if(qindex->update) db_clean(PDB(qindex->update)); MUTEX_DESTROY(qindex->mutex); if(qindex->xdict){mmtrie_clean(qindex->xdict);} if(qindex->namemap){mmtrie_clean(qindex->namemap);} if(qindex->idmap){mmtree64_close(qindex->idmap);} if(qindex->queue){iqueue_clean(qindex->queue);} if(qindex->mmqueue){mmqueue_clean(MMQ(qindex->mmqueue));} if(qindex->xpacketio.map) munmap(qindex->xpacketio.map, qindex->xpacketio.size); if(qindex->xpacketio.fd) close(qindex->xpacketio.fd); if(qindex->bstermio.map) munmap(qindex->bstermio.map, qindex->bstermio.size); if(qindex->bstermio.fd) close(qindex->bstermio.fd); if(qindex->map) mmtrie_clean(qindex->map); if(qindex->logger){LOGGER_CLEAN(qindex->logger);} xmm_free(qindex, sizeof(QINDEX)); } return ; }