![]() |
Helixis 1.0
Task Programming API
|
#include "queue_internal.h"
Go to the source code of this file.
Functions | |
void | queue_delete (struct queue_state *qs, void(*user_data_delete_function)(void *user_data, void *user_state), void *user_state) |
void | queue_internal_freelist_delete_function (void *user_data, void *user_state) |
Variables | |
hlx_api | gl_api |
void queue_delete | ( | struct queue_state * | qs, |
void(*)(void *user_data, void *user_state) | user_data_delete_function, | ||
void * | user_state | ||
) |
Definition at line 8 of file queue_delete.c.
References hlx_api::aligned_free_entry, queue_state::enqueue, queue_element::fe, freelist_delete(), freelist_push(), queue_state::fs, queue_dequeue(), queue_internal_freelist_delete_function(), and QUEUE_POINTER.
Referenced by hlx_group_destruct().
{ void *user_data; /* TRD : user_data_delete_function can be 0 */ /* TRD : user_state can be 0 */ while( queue_dequeue(qs, &user_data) ) if( user_data_delete_function != 0 ) user_data_delete_function( user_data, user_state ); /* TRD : fully dequeuing will leave us with a single dummy element which both qs->enqueue and qs->dequeue point at we push this back onto the freelist before we delete the freelist */ freelist_push( qs->fs, qs->enqueue[QUEUE_POINTER]->fe ); freelist_delete( qs->fs, queue_internal_freelist_delete_function, 0 ); gl_api.aligned_free_entry( qs ); return; }
void queue_internal_freelist_delete_function | ( | void * | user_data, |
void * | user_state | ||
) |
Definition at line 43 of file queue_delete.c.
References hlx_api::aligned_free_entry.
Referenced by queue_delete().
{ gl_api.aligned_free_entry( user_data ); return; }