static inline void tc_device_free(struct tc_device *n) { if(n->next) n->next->prev = n->prev; if(n->prev) n->prev->next = n->next; if(tc_device_root == n) { if(n->next) tc_device_root = n->next; else tc_device_root = n->prev; } if(unlikely(tc_device_index_del(n) != n)) error("plugin_tc: INTERNAL ERROR: removing device '%s' removed a different device.", n->id); while(n->classes) tc_class_free(n, n->classes); freez(n->id); freez(n->name); freez(n->family); freez(n); }
static inline void tc_device_free(struct tc_device *n) { if(n->next) n->next->prev = n->prev; if(n->prev) n->prev->next = n->next; if(tc_device_root == n) { if(n->next) tc_device_root = n->next; else tc_device_root = n->prev; } tc_device_index_del(n); while(n->classes) tc_class_free(n, n->classes); if(n->id) free(n->id); if(n->name) free(n->name); if(n->family) free(n->family); free(n); }