Helixis 1.0
Task Programming API
sources/liblfds/slist/slist_delete.c
Go to the documentation of this file.
00001 #include "slist_internal.h"
00002 #if defined(HLX_BUILD_WITH_PARALLEL_THREADING)
00003 
00004 extern hlx_api gl_api;
00005 
00006 void slist_delete( struct slist_state *ss )
00007 {
00008   slist_delete_all_elements( ss );
00009 
00010   gl_api.aligned_free_entry( ss );
00011 
00012   return;
00013 }
00014 
00015 void slist_delete_all_elements( struct slist_state *ss )
00016 {
00017   struct slist_element *volatile se, *volatile se_temp;
00018 
00019   se = ss->head;
00020 
00021   while( se != 0 )
00022   {
00023     /* TRD : if a non-deleted element and there is a delete function, call the delete function */
00024     if( ss->user_data_delete_function != 0 )
00025       ss->user_data_delete_function( (void *) se->user_data_and_flags[SLIST_USER_DATA], ss->user_state );
00026 
00027     se_temp = se;
00028     se = se->next;
00029     gl_api.aligned_free_entry( (void *) se_temp );
00030   }
00031 
00032   slist_internal_init_slist( ss, ss->user_data_delete_function, ss->user_state );
00033 
00034   return;
00035 }
00036 
00037 #endif /* !HLX_BUILD_WITH_PARALLEL_THREADING */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines