/* -------------------------------------------------------------------------- * * Free a dlink node * * -------------------------------------------------------------------------- */ void dlink_node_free(struct node *nptr) { /* Free node block */ mem_static_free(&dlink_heap, nptr); mem_static_collect(&dlink_heap); /* Update dlink_node statistics */ dlink_count--; }
/* -------------------------------------------------------------------------- * * Hook when a lclient is released. * * -------------------------------------------------------------------------- */ static void lc_cookie_release(struct lclient *lcptr) { struct lc_cookie *cookie; cookie = lcptr->plugdata[LCLIENT_PLUGDATA_COOKIE]; if(cookie) { dlink_delete(&lc_cookie_list, &cookie->node); lcptr->plugdata[LCLIENT_PLUGDATA_COOKIE] = NULL; mem_static_free(&lc_cookie_heap, cookie); mem_static_collect(&lc_cookie_heap); } }
/* -------------------------------------------------------------------------- * * Garbage collect * * -------------------------------------------------------------------------- */ void dlink_collect(void) { mem_static_collect(&dlink_heap); }