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