![]() |
Helixis 1.0
Task Programming API
|
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 */