void power_supply_free(struct power_supply *ps) { if(likely(ps)) { // free capacity structure if(likely(ps->capacity)) { if(likely(ps->capacity->st)) rrdset_is_obsolete(ps->capacity->st); freez(ps->capacity->filename); if(likely(ps->capacity->fd != -1)) close(ps->capacity->fd); files_num--; freez(ps->capacity); } freez(ps->name); struct ps_property *pr = ps->property_root; while(likely(pr)) { // free dimensions struct ps_property_dim *pd = pr->property_dim_root; while(likely(pd)) { freez(pd->name); freez(pd->filename); if(likely(pd->fd != -1)) close(pd->fd); files_num--; struct ps_property_dim *d = pd; pd = pd->next; freez(d); } // free properties if(likely(pr->st)) rrdset_is_obsolete(pr->st); freez(pr->name); freez(pr->title); freez(pr->units); struct ps_property *p = pr; pr = pr->next; freez(p); } // remove power supply from linked list if(likely(ps == power_supply_root)) { power_supply_root = ps->next; } else { struct power_supply *last; for(last = power_supply_root; last && last->next != ps; last = last->next); if(likely(last)) last->next = ps->next; } freez(ps); } }
static void network_interface_free(struct cgroup_network_interface *ifm) { if (likely(ifm->st_bandwidth)) rrdset_is_obsolete(ifm->st_bandwidth); if (likely(ifm->st_packets)) rrdset_is_obsolete(ifm->st_packets); if (likely(ifm->st_errors)) rrdset_is_obsolete(ifm->st_errors); if (likely(ifm->st_drops)) rrdset_is_obsolete(ifm->st_drops); if (likely(ifm->st_events)) rrdset_is_obsolete(ifm->st_events); network_interfaces_added--; freez(ifm->name); freez(ifm); }