Blender  V3.3
Classes | Typedefs | Functions
BLI_linklist_lockfree.h File Reference

Go to the source code of this file.

Classes

struct  LockfreeLinkNode
 
struct  LockfreeLinkList
 

Typedefs

typedef struct LockfreeLinkNode LockfreeLinkNode
 
typedef struct LockfreeLinkList LockfreeLinkList
 
typedef void(* LockfreeeLinkNodeFreeFP) (void *link)
 

Functions

void BLI_linklist_lockfree_init (LockfreeLinkList *list)
 
void BLI_linklist_lockfree_free (LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
 
void BLI_linklist_lockfree_clear (LockfreeLinkList *list, LockfreeeLinkNodeFreeFP free_func)
 
LockfreeLinkNodeBLI_linklist_lockfree_begin (LockfreeLinkList *list)
 
void BLI_linklist_lockfree_insert (LockfreeLinkList *list, LockfreeLinkNode *node)
 

Typedef Documentation

◆ LockfreeeLinkNodeFreeFP

typedef void(* LockfreeeLinkNodeFreeFP) (void *link)

Definition at line 29 of file BLI_linklist_lockfree.h.

◆ LockfreeLinkList

◆ LockfreeLinkNode

Function Documentation

◆ BLI_linklist_lockfree_begin()

LockfreeLinkNode* BLI_linklist_lockfree_begin ( LockfreeLinkList list)

Begin iteration of lock-free linked list, starting with a first user=defined node. Will ignore the dummy node.

Definition at line 62 of file BLI_linklist_lockfree.c.

References LockfreeLinkList::head, and LockfreeLinkNode::next.

Referenced by BKE_icons_deferred_free(), and TEST().

◆ BLI_linklist_lockfree_clear()

void BLI_linklist_lockfree_clear ( LockfreeLinkList list,
LockfreeeLinkNodeFreeFP  free_func 
)

Remove all the elements from the list, keep it usable for further inserts.

Definition at line 34 of file BLI_linklist_lockfree.c.

References BLI_linklist_lockfree_free(), BLI_linklist_lockfree_init(), and free_func().

Referenced by BKE_icons_deferred_free().

◆ BLI_linklist_lockfree_free()

void BLI_linklist_lockfree_free ( LockfreeLinkList list,
LockfreeeLinkNodeFreeFP  free_func 
)

Completely free the whole list, it is NOT re-usable after this.

Definition at line 21 of file BLI_linklist_lockfree.c.

References free_func(), LockfreeLinkList::head, LockfreeLinkNode::next, node, and NULL.

Referenced by BKE_icons_free(), BLI_linklist_lockfree_clear(), and TEST().

◆ BLI_linklist_lockfree_init()

void BLI_linklist_lockfree_init ( LockfreeLinkList list)

Make list ready for lock-free access.

Definition at line 15 of file BLI_linklist_lockfree.c.

References LockfreeLinkList::dummy_node, LockfreeLinkList::head, LockfreeLinkNode::next, NULL, and LockfreeLinkList::tail.

Referenced by BKE_icons_init(), BLI_linklist_lockfree_clear(), and TEST().

◆ BLI_linklist_lockfree_insert()

void BLI_linklist_lockfree_insert ( LockfreeLinkList list,
LockfreeLinkNode node 
)