Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(c) 2019-2023 Broadcom 3 : : * All rights reserved. 4 : : */ 5 : : 6 : : /* Linked List Functions */ 7 : : 8 : : #include <stdio.h> 9 : : #include "ll.h" 10 : : 11 : : /* init linked list */ 12 : 0 : void ll_init(struct ll *ll) 13 : : { 14 : 0 : ll->head = NULL; 15 : 0 : ll->tail = NULL; 16 : 0 : ll->cnt = 0; 17 : 0 : } 18 : : 19 : : /* insert entry in linked list */ 20 : 0 : void ll_insert(struct ll *ll, 21 : : struct ll_entry *entry) 22 : : { 23 [ # # ]: 0 : if (ll->head == NULL) { 24 : 0 : ll->head = entry; 25 : 0 : ll->tail = entry; 26 : 0 : entry->next = NULL; 27 : 0 : entry->prev = NULL; 28 : : } else { 29 : 0 : entry->next = ll->head; 30 : 0 : entry->prev = NULL; 31 : 0 : entry->next->prev = entry; 32 : 0 : ll->head = entry->next->prev; 33 : : } 34 : 0 : ll->cnt++; 35 : 0 : } 36 : : 37 : : /* delete entry from linked list */ 38 : 0 : void ll_delete(struct ll *ll, 39 : : struct ll_entry *entry) 40 : : { 41 [ # # # # ]: 0 : if (ll->head == entry && ll->tail == entry) { 42 : 0 : ll->head = NULL; 43 : 0 : ll->tail = NULL; 44 [ # # ]: 0 : } else if (ll->head == entry) { 45 : 0 : ll->head = entry->next; 46 : 0 : ll->head->prev = NULL; 47 [ # # ]: 0 : } else if (ll->tail == entry) { 48 : 0 : ll->tail = entry->prev; 49 : 0 : ll->tail->next = NULL; 50 : : } else { 51 : 0 : entry->prev->next = entry->next; 52 : 0 : entry->next->prev = entry->prev; 53 : : } 54 : 0 : ll->cnt--; 55 : 0 : }