void scheduler_clean(void) { event_t *event; if (scheduler == NULL) { return; } while ((event = (event_t *) sodas_pop(scheduler)) != NULL) { switch (event->priority) { case PRIORITY_RX_END: packet_dealloc(event->u.rx.packet); break; case PRIORITY_RX_BEGIN: packet_dealloc(event->u.rx.packet); break; case PRIORITY_TX_END: packet_dealloc(event->u.rx.packet); break; default: break; } mem_fs_dealloc(mem_event, event); } sodas_destroy(scheduler); worldsens_clean(); }
int destroy(call_t *c) { struct _env_data *entitydata = get_entity_private_data(c); struct _collec_event *event; /* Free the pending events */ while ((event = (struct _collec_event *) sodas_pop(entitydata->events)) != NULL) { free(event); } /* Free the event list */ sodas_destroy(entitydata->events); free(entitydata); return 0; }