Helixis 1.0
Task Programming API
Functions | Variables
sources/liblfds/slist/slist_new.c File Reference
#include "slist_internal.h"

Go to the source code of this file.

Functions

int slist_new (struct slist_state **ss, void(*user_data_delete_function)(void *user_data, void *user_state), void *user_state)
void slist_internal_init_slist (struct slist_state *ss, void(*user_data_delete_function)(void *user_data, void *user_state), void *user_state)
struct slist_elementslist_new_head (struct slist_state *ss, void *user_data)

Variables

hlx_api gl_api

Function Documentation

void slist_internal_init_slist ( struct slist_state ss,
void(*)(void *user_data, void *user_state)  user_data_delete_function,
void *  user_state 
)

Definition at line 25 of file slist_new.c.

References slist_state::head, slist_state::user_data_delete_function, and slist_state::user_state.

Referenced by slist_delete_all_elements(), and slist_new().

{
  /* TRD : user_data_delete_function can be 0 */
  /* TRD : user_state can be 0 */

  ss->head = 0;
  ss->user_data_delete_function = user_data_delete_function;
  ss->user_state = user_state;

  return;
}
int slist_new ( struct slist_state **  ss,
void(*)(void *user_data, void *user_state)  user_data_delete_function,
void *  user_state 
)

Definition at line 6 of file slist_new.c.

References ALIGN_SINGLE_POINTER, hlx_api::aligned_malloc_entry, slist_internal_init_slist(), and slist_state::user_data_delete_function.

Referenced by _hlx_event_handler_create_by_hash(), _init_channel_manager(), hlx_chan_create(), and hlx_event_manager_create().

{
  int
    rv = 0;

  /* TRD : user_data_delete_function can be 0 */
  /* TRD : user_state can be 0 */

  *ss = (struct slist_state *) gl_api.aligned_malloc_entry( sizeof(struct slist_state), ALIGN_SINGLE_POINTER );

  if( *ss != 0 )
  {
    slist_internal_init_slist( *ss, user_data_delete_function, user_state );
    rv = 1;
  }

  return( rv );
}
struct slist_element* slist_new_head ( struct slist_state ss,
void *  user_data 
) [read]

Definition at line 37 of file slist_new.c.

References ALIGN, ALIGN_DOUBLE_POINTER, ALIGN_SINGLE_POINTER, hlx_api::aligned_malloc_entry, SLIST_FLAGS, slist_internal_link_element_to_head(), SLIST_NO_FLAGS, SLIST_USER_DATA, and slist_element::user_data_and_flags.

Referenced by _hlx_event_handler_create_by_hash(), _hlx_event_register_callback_with_group(), and hlx_chan_create().

{
  ALIGN(ALIGN_SINGLE_POINTER) struct slist_element
    *volatile se;

  /* TRD : user_data can be 0 */

  se = (struct slist_element *) gl_api.aligned_malloc_entry( sizeof(struct slist_element), ALIGN_DOUBLE_POINTER );

  if( se != 0 )
  {
    se->user_data_and_flags[SLIST_USER_DATA] = user_data;
    se->user_data_and_flags[SLIST_FLAGS] = SLIST_NO_FLAGS;

    slist_internal_link_element_to_head( ss, se );
  }

  return( (struct slist_element *) se );
}

Variable Documentation

Definition at line 42 of file api.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines