static void ledtrig_general_remove(struct device_t * dev) { struct ledtrig_t * ledtrig = (struct ledtrig_t *)dev->priv; struct ledtrig_general_pdata_t * pdat = (struct ledtrig_general_pdata_t *)ledtrig->priv; if(ledtrig && unregister_ledtrig(ledtrig)) { timer_cancel(&pdat->timer); free_device_name(ledtrig->name); free(ledtrig->priv); free(ledtrig); } }
static bool_t ledtrig_unregister_heartbeat(struct resource_t * res) { struct ledtrig_t * trigger; char name[64]; snprintf(name, sizeof(name), "%s.%d", res->name, res->id); trigger = search_ledtrig(name); if(!trigger) return FALSE; if(!unregister_ledtrig(trigger)) return FALSE; free(trigger->priv); free(trigger->name); free(trigger); return TRUE; }