function lfds711_list_aso_insert
Source Files
└───liblfds711 ├───inc │ └───liblfds711 │ lfds711_list_addonly_singlylinked_ordered.h └───src └───llfds711_list_addonly_singlylinked_ordered lfds711_list_addonly_singlylinked_ordered_insert.c
Opaque Structures
struct lfds711_list_aso_element; struct lfds711_list_aso_state;
Prototype
enum lfds711_list_aso_insert_result lfds711_list_aso_insert( struct lfds711_list_aso_state *lasos, struct lfds711_list_aso_element *lasoe, struct lfds711_list_aso_element **existing_lasoe );
Parameters
struct lfds711_list_aso_state *lasos
- A pointer to an initialized struct lfds711_list_aso_state.
struct lfds711_list_aso_element *lasoe
- A pointer a user-allocated LFDS711_PAL_ATOMIC_ISOLATION_IN_BYTES aligned struct lfds711_list_aso_element, which will be inserted into the list. Stack declared variables will automatically be correctly aligned by the compiler, due to the information in the structure definitions; nothing has to be done. Heap allocated variables however will by no means be correctly aligned and an aligned malloc must be used.
struct lfds711_list_aso_element **existing_lasoe
- If on put the key already exists, *existing_lasoe is set to point to the existing element with that key. This argument can be NULL (and then is unused).
Return Value
The return value is an enum lfds711_list_aso_insert_result.
If the key did not exist in the list, and so was successfully linked, the return value is LFDS711_LIST_ASO_INSERT_RESULT_SUCCESS.
If the key already exists in the list, but LFDS711_LIST_ASO_EXISTING_KEY_OVERWRITE was specified to lfds711_list_aso_init_valid_on_current_logical_core when initializing the list, the return value is LFDS711_LIST_ASO_INSERT_RESULT_SUCCESS_OVERWRITE (and the value in the existing key will have been overwritten with the value in the new key).
If the key already exists in the list, but LFDS711_LIST_ASO_EXISTING_KEY_FAIL was specified to lfds711_list_aso_init_valid_on_current_logical_core when initializing the list, the return value is LFDS711_LIST_ASO_INSERT_RESULT_FAILURE_EXISTING_KEY (and the value in the existing key will be unchanged).
Notes
This function takes a user allocated struct lfds711_list_aso_element, which the user has with the list macros populated with a key (and typically but optionally with a value), and inserts this element into the list, using the key_compare_function callback to compare list element keys to find the correct position in the btree.
If when inserting a new element the key is already present in the list, the argument *existing_lasoe, if not NULL, will be set to point to the existing element.