![]() |
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;
}
1.7.4