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();
}
Beispiel #2
0
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;
}