1*aaf4363eSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 2*aaf4363eSJerin Jacob * Copyright(c) 2016 Cavium, Inc 3f2546f8eSKamil Rytarowski */ 4f2546f8eSKamil Rytarowski 5f2546f8eSKamil Rytarowski #include <assert.h> 6f2546f8eSKamil Rytarowski #include <stddef.h> 7f2546f8eSKamil Rytarowski #include <err.h> 8f2546f8eSKamil Rytarowski 9f2546f8eSKamil Rytarowski #include "nicvf_bsvf.h" 10f2546f8eSKamil Rytarowski #include "nicvf_plat.h" 11f2546f8eSKamil Rytarowski 12fc2c8014SJerin Jacob static STAILQ_HEAD(, svf_entry) head = STAILQ_HEAD_INITIALIZER(head); 13f2546f8eSKamil Rytarowski 14f2546f8eSKamil Rytarowski void nicvf_bsvf_push(struct svf_entry * entry)15f2546f8eSKamil Rytarowskinicvf_bsvf_push(struct svf_entry *entry) 16f2546f8eSKamil Rytarowski { 17f2546f8eSKamil Rytarowski assert(entry != NULL); 18f2546f8eSKamil Rytarowski assert(entry->vf != NULL); 19f2546f8eSKamil Rytarowski 20fc2c8014SJerin Jacob STAILQ_INSERT_TAIL(&head, entry, next); 21f2546f8eSKamil Rytarowski } 22f2546f8eSKamil Rytarowski 23f2546f8eSKamil Rytarowski struct svf_entry * nicvf_bsvf_pop(void)24f2546f8eSKamil Rytarowskinicvf_bsvf_pop(void) 25f2546f8eSKamil Rytarowski { 26f2546f8eSKamil Rytarowski struct svf_entry *entry; 27f2546f8eSKamil Rytarowski 28fc2c8014SJerin Jacob assert(!STAILQ_EMPTY(&head)); 29f2546f8eSKamil Rytarowski 30fc2c8014SJerin Jacob entry = STAILQ_FIRST(&head); 31f2546f8eSKamil Rytarowski 32f2546f8eSKamil Rytarowski assert(entry != NULL); 33f2546f8eSKamil Rytarowski assert(entry->vf != NULL); 34f2546f8eSKamil Rytarowski 35fc2c8014SJerin Jacob STAILQ_REMOVE_HEAD(&head, next); 36f2546f8eSKamil Rytarowski 37f2546f8eSKamil Rytarowski return entry; 38f2546f8eSKamil Rytarowski } 39f2546f8eSKamil Rytarowski 40f2546f8eSKamil Rytarowski int nicvf_bsvf_empty(void)41f2546f8eSKamil Rytarowskinicvf_bsvf_empty(void) 42f2546f8eSKamil Rytarowski { 43fc2c8014SJerin Jacob return STAILQ_EMPTY(&head); 44f2546f8eSKamil Rytarowski } 45