/* * SPDX-License-Identifier: BSD-2-Clause * * Simple simply-linked list library. * * Copyright (c) 2025 Rivos Inc. * * Authors: * Clément Léger */ #ifndef __SBI_SLIST_H__ #define __SBI_SLIST_H__ #include #define SBI_SLIST_HEAD_INIT(_ptr) (_ptr) #define SBI_SLIST_HEAD(_lname, _stype) struct _stype *_lname #define SBI_SLIST_NODE(_stype) SBI_SLIST_HEAD(next, _stype) #define SBI_SLIST_NODE_INIT(_ptr) .next = _ptr #define SBI_INIT_SLIST_HEAD(_head) (_head) = NULL #define SBI_SLIST_ADD(_ptr, _head) \ do { \ (_ptr)->next = _head; \ (_head) = _ptr; \ } while (0) #define SBI_SLIST_FOR_EACH_ENTRY(_ptr, _head) \ for (_ptr = _head; _ptr; _ptr = _ptr->next) #endif