function lfds711_list_asu_insert_at_position

From liblfds.org
Jump to navigation Jump to search

Source Files

└───liblfds711
    ├───inc
    │   └───liblfds711
    │           lfds711_list_addonly_singlylinked_unordered.h
    └───src
        └───llfds711_list_addonly_singlylinked_unordered
                lfds711_list_addonly_singlylinked_unordered_insert.c

Opaque Structures

struct lfds711_list_asu_element;
struct lfds711_list_asu_state;

Prototype

void lfds711_list_asu_insert_at_position( struct lfds711_list_asu_state *lasus,
                                          struct lfds711_list_asu_element *lasue,
                                          struct lfds711_list_asu_element *lasue_predecessor,
                                          enum lfds711_list_asu_position position );

Parameters

struct lfds711_list_asu_state *lasus

A pointer to an initialized struct lfds711_list_asu_state.

struct lfds711_list_asu_element *lasue

A pointer a user-allocated LFDS711_PAL_ATOMIC_ISOLATION_IN_BYTES aligned struct lfds711_list_asu_element. 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_asu_element *lasue_predecessor

A pointer an element already in the list. This argument is only used if position is set to LFDS711_LIST_ASU_POSITION_AFTER.

enum lfds711_list_asu_position position

Indictes which position to insert*lasue at.

Notes

This is a convenience function which wraps the functionality provided by lfds711_list_asu_insert_at_start, lfds711_list_asu_insert_at_end and lfds711_list_asu_insert_after into a single function where the desired behaviour is selected by means of the position argument.

So rather than having in your code to select which function to call, you can just select which enum value to use.

See Also