1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 /**
5 ***************************************************************************
6 * @file lac_list.h
7 *
8 * @defgroup SalList
9 *
10 * @ingroup SalCtrl
11 *
12 * List structure and list functions.
13 *
14 ***************************************************************************/
15
16 #ifndef LAC_LIST_H
17 #define LAC_LIST_H
18
19 /**
20 *****************************************************************************
21 * @ingroup SalList
22 *
23 * @description
24 * List structure
25 *
26 *****************************************************************************/
27 typedef struct sal_list_s {
28
29 struct sal_list_s *next;
30 void *pObj;
31
32 } sal_list_t;
33
34 /**
35 *******************************************************************************
36 * @ingroup SalList
37 * Add a structure to tail of a list.
38 *
39 * @description
40 * Adds pObj to the tail of list (if it exists). Allocates and sets a
41 * new sal_list_t structure.
42 *
43 * @param[in] list Pointer to the head pointer of the list.
44 * Can be NULL if no elements yet in list.
45 * @param[in/out] tail Pointer to tail pointer of the list.
46 * Can be NULL if no elements yet in list.
47 * Is updated by the function to point to
48 *tail
49 * of list if pObj has been successfully
50 *added.
51 * @param[in] pObj Pointer to structure to add to tail of
52 * the list.
53 * @retval status
54 *
55 *****************************************************************************/
56 CpaStatus SalList_add(sal_list_t **list, sal_list_t **tail, void *pObj);
57
58 /**
59 *******************************************************************************
60 * @ingroup SalList
61 * Delete an element from the list.
62 *
63 * @description
64 * Delete an element from the list.
65 *
66 * @param[in/out] head_list Pointer to the head pointer of the list.
67 * Can be NULL if no elements yet in list.
68 * Is updated by the function
69 * to point to list->next if head_list is
70 *list.
71 * @param[in/out] pre_list Pointer to the previous pointer of the
72 *list.
73 * Can be NULL if no elements yet in list.
74 * (*pre_list)->next is updated
75 * by the function to point to list->next
76 * @param[in] list Pointer to list.
77 *
78 *****************************************************************************/
79 void
80 SalList_del(sal_list_t **head_list, sal_list_t **pre_list, sal_list_t *list);
81
82 /**
83 *******************************************************************************
84 * @ingroup SalList
85 * Returns pObj element in list structure.
86 *
87 * @description
88 * Returns pObj associated with sal_list_t structure.
89 *
90 * @param[in] list Pointer to list element.
91 * @retval void* pObj member of list structure.
92 *
93 *****************************************************************************/
94 void *SalList_getObject(sal_list_t *list);
95
96 /**
97 *******************************************************************************
98 * @ingroup SalList
99 * Set pObj to be NULL in the list.
100 *
101 * @description
102 * Set pObj of a element in the list to be NULL.
103 *
104 * @param[in] list Pointer to list element.
105 *
106 *****************************************************************************/
107 void SalList_delObject(sal_list_t **list);
108
109 /**
110 *******************************************************************************
111 * @ingroup SalList
112 * Returns next element in list structure.
113 *
114 * @description
115 * Returns next associated with sal_list_t structure.
116 *
117 * @param[in] list Pointer to list element.
118 * @retval void* next member of list structure.
119 *
120 *****************************************************************************/
121 void *SalList_next(sal_list_t *);
122
123 /**
124 *******************************************************************************
125 * @ingroup SalList
126 * Frees memory associated with list structure.
127 *
128 * @description
129 * Frees memory associated with list structure and the Obj pointed to by
130 * the list.
131 *
132 * @param[in] list Pointer to list.
133 *
134 *****************************************************************************/
135 void SalList_free(sal_list_t **);
136
137 #endif
Cache object: 1cc304c46131bf2d750fe5acd894de2b
|