#include "BBC/LL.ih"
#include "BBC/inline.h"
#include "BBC/LLI_pubdefs.h"
Defines | |
| #define | LLI__EXT_PROTO INLINE_USR_EXT_PROTO |
| #define | LLI__LCL_PROTO INLINE_USR_LCL_PROTO |
| #define | LLI__EXT_FNC INLINE_USR_EXT_FNC |
| #define | LLI__LCL_FNC INLINE_USR_LCL_FNC |
Functions | |
| LLI__EXT_PROTO int | LLI__init (struct _LLI_list *list, enum _LLI_type type) |
| Initializes the list head of a doubly linked list to an empty list. More... | |
| LLI__EXT_PROTO int | LLI__destroy (struct _LLI_list *list) |
| Destroys the data structures associate with a linked list. More... | |
| LLI__EXT_PROTO struct _LLI_node * | LLI__insert (struct _LLI_list *list, struct _LLI_node *node) |
| Adds a node to the tail of a previously initialized linked list. More... | |
| LLI__EXT_PROTO struct _LLI_node * | LLI__jam (struct _LLI_list *list, struct _LLI_node *node) |
| Adds a node to the head of a previously initialized linked list. More... | |
| LLI__EXT_PROTO struct _LLI_node * | LLI__remove (struct _LLI_list *list) |
| Removes the node from the tail of a previously initialized linked list. An empty list returns NULL as its node. More... | |
| LLI__EXT_PROTO int | LLI__lock_init (struct _LLI_list *list, enum _LLI_type type) |
| This initializes the blocking control structures. More... | |
| LLI__EXT_PROTO LLI_key | LLI__lock (struct _LLI_list *list) |
| This routine blocks until a node becomes available. More... | |
| LLI__EXT_PROTO void | LLI__unlock (struct _LLI_list *list, LLI_key key) |
| This routine unblocks the previously block list. More... | |
| LLI__EXT_PROTO int | LLI__wake (struct _LLI_list *list) |
| This provides the signaling mechanism to wake up a thread of code which was previously blocked. More... | |
| LLI__EXT_PROTO int | LLI__lock_destroy (struct _LLI_list *list) |
| Frees any resources associated with the blocking mechanism. More... | |
| LLI__EXT_PROTO struct _LLI_node * | LLI__removeW (struct _LLI_list *list, int timeout) |
| Removes the node from the tail of a previously initialized linked list. If the list is empty, the thread of code is blocked until a node becomes available. More... | |
See also the non-inlined versions of these routines which offer possible savings in code space and increased modularity at the expense of some performance. The LL routines provide the same functionality without the overhead of being interlocked.
|
|
External Function declaration |
|
|
External Prototype spec |
|
|
Internal Function declaration |
|
|
Internal Prototype spec |
|
|
Destroys the data structures associate with a linked list.
|
|
||||||||||||
|
Initializes the list head of a doubly linked list to an empty list.
|
|
||||||||||||
|
Adds a node to the tail of a previously initialized linked list.
|
|
||||||||||||
|
Adds a node to the head of a previously initialized linked list.
|
|
|
This routine blocks until a node becomes available.
WARNING |
|
|
Frees any resources associated with the blocking mechanism.
WARNING |
|
||||||||||||
|
This initializes the blocking control structures.
Returns the key used to block and unblock the blocking mechanisms. This is used when the list is to block when a removal is performed on an empty list.
WARNING |
|
|
Removes the node from the tail of a previously initialized linked list. An empty list returns NULL as its node.
Removes the node at the head of the list. If the list is empty, NULL is returned. |
|
||||||||||||
|
Removes the node from the tail of a previously initialized linked list. If the list is empty, the thread of code is blocked until a node becomes available.
|
|
||||||||||||
|
This routine unblocks the previously block list.
WARNING |
|
|
This provides the signaling mechanism to wake up a thread of code which was previously blocked.
WARNING |
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001