27 lines
783 B
C
27 lines
783 B
C
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
|
|||
|
|
/*
|
||
|
|
* Copyright (c) 2023 Amlogic, Inc. All rights reserved.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef _USER_RING_BUFFER_H
|
||
|
|
#define _USER_RING_BUFFER_H
|
||
|
|
|
||
|
|
struct ring_buffer {
|
||
|
|
void *buffer;
|
||
|
|
u32 size;
|
||
|
|
u32 in;
|
||
|
|
u32 out;
|
||
|
|
u8 go_empty;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct ring_buffer *ring_buffer_init(u32 size);
|
||
|
|
int ring_buffer_release(struct ring_buffer *ring_buf);
|
||
|
|
u32 ring_buffer_len(const struct ring_buffer *ring_buf);
|
||
|
|
u32 ring_buffer_used_len(const struct ring_buffer *ring_buf);
|
||
|
|
u32 ring_buffer_free_len(const struct ring_buffer *ring_buf);
|
||
|
|
u32 no_thread_safe_ring_buffer_get(struct ring_buffer *ring_buf, void *buffer, u32 size);
|
||
|
|
u32 no_thread_safe_ring_buffer_put(struct ring_buffer *ring_buf, void *buffer, u32 size);
|
||
|
|
u32 ring_buffer_go_empty(struct ring_buffer *ring_buf);
|
||
|
|
|
||
|
|
#endif
|