1 /*
2 * Copyright (C) 2018-2023 Intel Corporation.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7 #ifndef SHARED_BUF_H
8 #define SHARED_BUF_H
9
10 #include <linux/types.h>
11 #include "acrn_common.h"
12
13
sbuf_is_empty(struct shared_buf * sbuf)14 static inline bool sbuf_is_empty(struct shared_buf *sbuf)
15 {
16 return (sbuf->head == sbuf->tail);
17 }
18
sbuf_clear_flags(struct shared_buf * sbuf,uint64_t flags)19 static inline void sbuf_clear_flags(struct shared_buf *sbuf, uint64_t flags)
20 {
21 sbuf->flags &= ~flags;
22 }
23
sbuf_set_flags(struct shared_buf * sbuf,uint64_t flags)24 static inline void sbuf_set_flags(struct shared_buf *sbuf, uint64_t flags)
25 {
26 sbuf->flags = flags;
27 }
28
sbuf_add_flags(struct shared_buf * sbuf,uint64_t flags)29 static inline void sbuf_add_flags(struct shared_buf *sbuf, uint64_t flags)
30 {
31 sbuf->flags |= flags;
32 }
33
34 uint32_t sbuf_get(struct shared_buf *sbuf, uint8_t *data);
35 uint32_t sbuf_put(struct shared_buf *sbuf, uint8_t *data, uint32_t max_len);
36 int sbuf_clear_buffered(struct shared_buf *sbuf);
37 void sbuf_init(struct shared_buf *sbuf, uint32_t total_size, uint32_t ele_size);
38
39 #endif /* SHARED_BUF_H */
40