Helixis 1.0
Task Programming API
Functions | Variables
sources/liblfds/queue/queue_delete.c File Reference
#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

Function Documentation

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;
}

Variable Documentation

Definition at line 42 of file api.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines