Kernel Functions for Drivers list_create(9F)
NAME
list_create, list_destroy, list_insert_after,
list_insert_before, list_insert_head, list_insert_tail,
list_remove, list_remove_head, list_remove_tail, list_head,
list_tail, list_next, list_prev, list_is_empty,
list_link_init, list_link_active, list_move_tail,
list_link_replace - list functions
SYNOPSIS
#include
void list_create(list_t * list, size_t size, size_t offset);
void list_destroy(list_t * list);
void list_insert_after(list_t * list, void *reference_item,
void *new_item);
void list_insert_before(list_t * list, void *reference_item,
void *new_item);
void list_insert_head(list_t * list*, void *new_item);
void list_insert_tail(list_t * list, void *new_item);
void list_remove(list_t * list, void *item);
void *list_remove_head(list_t * list);
void *list_remove_tail(list_t * list);
void *list_head(list_t * list);
void *list_tail(list_t * list);
void *list_next(list_t * list, void *reference_item);
void *list_prev(list_t * list, void *reference_item);
SunOS 5.11 Last change: 17 Sep 2009 1
Kernel Functions for Drivers list_create(9F)
int list_is_empty(list_t * list);
void list_link_init(list_node_t *node);
int list_link_active(list_node_t *node);
void list_move_tail(list_t *dst, list_t *src);
void list_link_replace(list_node_t *node1, list_node_t *node2);
DESCRIPTION
The list_create() function initializes a new list. The
driver supplies the storage for the list handle, the size ofan individual element, and the offset of a list_node_t
within the element to use for the links of the list.The list_destroy() function destroys the list handle,
including freeing any resources that may have been inter-
nally allocated for the list. The list must be empty when this function is called.The list_insert_after() and list_insert_before() functions
insert new_item into the linked list at a location after or
before the reference item, which must already be on the list.The list_insert_head() and list_insert_tail() functions
insert the new_item on the list at either the head or tail
of the list. (The head is the first item, the tail is the last item).The list_remove() function removes the item from the list.
The list_remove_head() and list_remove_tail() functions
remove the head (first) or tail (last) item from the list. The item removed is returned to the caller. If the list is empty when these functions are called, then no change is made and NULL is returned to the caller.The list_head() and list_tail() functions simply return the
head (first) or tail (last) item on the list. NULL isSunOS 5.11 Last change: 17 Sep 2009 2
Kernel Functions for Drivers list_create(9F)
returned if the list is empty.The list_next() and list_prev() functions return the next or
previous item in the list, relative to the named reference item which must be linked on the list.The list_is_empty() function returns 0 if the list has items
in it, or non-zero otherwise.
The list_link_init() function initializes the list_node_t.
It is functionally equivalent to bzero(node, sizeof(*node));The list_link_active() function returns non-zero if the node
is on an active list.The list_move_tail() function is used to append the items on
the src list to the end of the dst list. It is mandatory that the two lists were initialized using identical size and offset parameters. Upon completion, the src list will be empty.The list_link_replace() function swaps two items on a list.
Note that the items need not be on the same list, butextreme care must be used to ensure that both lists are pro-
tected from concurrent accesses and that the lists were ini-
tialized with identical size and offset parameters.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
attributes(5)SunOS 5.11 Last change: 17 Sep 2009 3