2 #include "lfds710_list_addonly_singlylinked_ordered_internal.h"
8 /****************************************************************************/
9 void lfds710_list_aso_init_valid_on_current_logical_core( struct lfds710_list_aso_state *lasos,
10 int (*key_compare_function)(void const *new_key, void const *existing_key),
11 enum lfds710_list_aso_existing_key existing_key,
14 LFDS710_PAL_ASSERT( lasos != NULL );
15 LFDS710_PAL_ASSERT( (lfds710_pal_uint_t) &lasos->dummy_element % LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES == 0 );
16 LFDS710_PAL_ASSERT( (lfds710_pal_uint_t) &lasos->start % LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES == 0 );
17 LFDS710_PAL_ASSERT( key_compare_function != NULL );
18 // TRD : existing_key can be any value in its range
19 // TRD : user_state can be NULL
21 // TRD : dummy start element - makes code easier when you can always use ->next
22 lasos->start = &lasos->dummy_element;
24 lasos->start->next = NULL;
25 lasos->start->value = NULL;
26 lasos->key_compare_function = key_compare_function;
27 lasos->existing_key = existing_key;
28 lasos->user_state = user_state;
30 lfds710_misc_internal_backoff_init( &lasos->insert_backoff );
32 LFDS710_MISC_BARRIER_STORE;
34 lfds710_misc_force_store();