Lines Matching refs:list
65 int mpp_list_add_at_head(MppList *list, void *data, int size) in mpp_list_add_at_head() argument
69 if (list->head) { in mpp_list_add_at_head()
72 mpp_list_add(node, list->head); in mpp_list_add_at_head()
73 list->count++; in mpp_list_add_at_head()
82 int mpp_list_add_at_tail(MppList *list, void *data, int size) in mpp_list_add_at_tail() argument
86 if (list->head) { in mpp_list_add_at_tail()
90 mpp_list_add_tail(node, list->head); in mpp_list_add_at_tail()
91 list->count++; in mpp_list_add_at_tail()
134 int mpp_list_del_at_head(MppList *list, void *data, int size) in mpp_list_del_at_head() argument
138 if (list->head && list->count) { in mpp_list_del_at_head()
139 _list_del_node_no_lock(list->head->next, data, size); in mpp_list_del_at_head()
140 list->count--; in mpp_list_del_at_head()
146 int mpp_list_del_at_tail(MppList *list, void *data, int size) in mpp_list_del_at_tail() argument
150 if (list->head && list->count) { in mpp_list_del_at_tail()
151 _list_del_node_no_lock(list->head->prev, data, size); in mpp_list_del_at_tail()
152 list->count--; in mpp_list_del_at_tail()
172 rk_s32 mpp_list_fifo_wr(MppList *list, void *data, rk_s32 size) in mpp_list_fifo_wr() argument
176 if (list && list->head) { in mpp_list_fifo_wr()
180 mpp_list_add_tail(node, list->head); in mpp_list_fifo_wr()
181 list->count++; in mpp_list_fifo_wr()
203 rk_s32 mpp_list_fifo_rd(MppList *list, void *data, rk_s32 *size) in mpp_list_fifo_rd() argument
207 if (list && list->head && list->count) { in mpp_list_fifo_rd()
208 MppListNode *node = list->head->next; in mpp_list_fifo_rd()
212 list->count--; in mpp_list_fifo_rd()
218 int mpp_list_is_empty(MppList *list) in mpp_list_is_empty() argument
220 return list->count == 0; in mpp_list_is_empty()
223 int mpp_list_size(MppList *list) in mpp_list_size() argument
225 return list->count; in mpp_list_size()
228 rk_s32 mpp_list_add_by_key(MppList *list, void *data, rk_s32 size, rk_u32 *key) in mpp_list_add_by_key() argument
232 if (list->head) { in mpp_list_add_by_key()
234 rk_u32 list_key = mpp_list_get_key(list); in mpp_list_add_by_key()
239 mpp_list_add_tail(node, list->head); in mpp_list_add_by_key()
240 list->count++; in mpp_list_add_by_key()
249 rk_s32 mpp_list_del_by_key(MppList *list, void *data, rk_s32 size, rk_u32 key) in mpp_list_del_by_key() argument
253 if (list && list->head && list->count) { in mpp_list_del_by_key()
254 MppListNode *tmp = list->head->next; in mpp_list_del_by_key()
257 while (tmp->next != list->head) { in mpp_list_del_by_key()
260 list->count--; in mpp_list_del_by_key()
270 rk_s32 mpp_list_show_by_key(MppList *list, void *data, rk_u32 key) in mpp_list_show_by_key() argument
274 (void)list; in mpp_list_show_by_key()
280 void mpp_list_flush(MppList* list) in mpp_list_flush() argument
282 if (list->head) { in mpp_list_flush()
283 while (list->count) { in mpp_list_flush()
284 MppListNode* node = list->head->next; in mpp_list_flush()
288 if (list->destroy) { in mpp_list_flush()
289 list->destroy((void*)(node + 1)); in mpp_list_flush()
293 list->count--; in mpp_list_flush()
297 mpp_list_signal(list); in mpp_list_flush()
300 MPP_RET mpp_list_wait(MppList* list) in mpp_list_wait() argument
304 ret = mpp_mutex_cond_wait(&list->cond_lock); in mpp_list_wait()
315 MPP_RET mpp_list_wait_timed(MppList *list, rk_s64 timeout) in mpp_list_wait_timed() argument
319 ret = (MPP_RET)mpp_mutex_cond_timedwait(&list->cond_lock, timeout); in mpp_list_wait_timed()
330 MPP_RET mpp_list_wait_lt(MppList *list, rk_s64 timeout, rk_s32 val) in mpp_list_wait_lt() argument
332 if (list->count < val) in mpp_list_wait_lt()
336 return mpp_list_wait(list); in mpp_list_wait_lt()
338 return mpp_list_wait_timed(list, timeout); in mpp_list_wait_lt()
342 MPP_RET mpp_list_wait_le(MppList *list, rk_s64 timeout, rk_s32 val) in mpp_list_wait_le() argument
344 if (list->count <= val) in mpp_list_wait_le()
348 return mpp_list_wait(list); in mpp_list_wait_le()
350 return mpp_list_wait_timed(list, timeout); in mpp_list_wait_le()
354 MPP_RET mpp_list_wait_gt(MppList *list, rk_s64 timeout, rk_s32 val) in mpp_list_wait_gt() argument
356 if (list->count > val) in mpp_list_wait_gt()
360 return mpp_list_wait(list); in mpp_list_wait_gt()
362 return mpp_list_wait_timed(list, timeout); in mpp_list_wait_gt()
366 MPP_RET mpp_list_wait_ge(MppList *list, rk_s64 timeout, rk_s32 val) in mpp_list_wait_ge() argument
368 if (list->count >= val) in mpp_list_wait_ge()
372 return mpp_list_wait(list); in mpp_list_wait_ge()
374 return mpp_list_wait_timed(list, timeout); in mpp_list_wait_ge()
378 void mpp_list_signal(MppList *list) in mpp_list_signal() argument
380 mpp_mutex_cond_signal(&list->cond_lock); in mpp_list_signal()
383 rk_u32 mpp_list_get_key(MppList *list) in mpp_list_get_key() argument
385 return list->keys++; in mpp_list_get_key()
390 MppList *list = mpp_malloc(MppList, 1); in mpp_list_create() local
392 if (list == NULL) { in mpp_list_create()
397 list->destroy = func; in mpp_list_create()
398 list->count = 0; in mpp_list_create()
400 list->head = mpp_malloc(MppListNode, 1); in mpp_list_create()
401 if (list->head == NULL) { in mpp_list_create()
403 mpp_free(list); in mpp_list_create()
407 list_node_init_with_key_and_size(list->head, 0, 0); in mpp_list_create()
409 mpp_mutex_cond_init(&list->cond_lock); in mpp_list_create()
411 return list; in mpp_list_create()
414 void mpp_list_destroy(MppList *list) in mpp_list_destroy() argument
418 if (!list) in mpp_list_destroy()
421 mpp_list_flush(list); in mpp_list_destroy()
423 node = list->head->next; in mpp_list_destroy()
424 while (node != list->head) { in mpp_list_destroy()
431 mpp_mutex_cond_destroy(&list->cond_lock); in mpp_list_destroy()
433 mpp_free(list->head); in mpp_list_destroy()
434 list->head = NULL; in mpp_list_destroy()
436 mpp_free(list); in mpp_list_destroy()
437 list = NULL; in mpp_list_destroy()
533 struct list_head *list = head->next, *pending = NULL; in list_sort() local
536 if (list == head->prev) /* Zero or one elements */ in list_sort()
578 list->prev = pending; in list_sort()
579 pending = list; in list_sort()
580 list = list->next; in list_sort()
583 } while (list); in list_sort()
586 list = pending; in list_sort()
593 list = merge(priv, cmp, pending, list); in list_sort()
597 merge_final(priv, cmp, head, pending, list); in list_sort()