参考代码
This commit is contained in:
103
components/system/include/os/os_ipc.h
Executable file
103
components/system/include/os/os_ipc.h
Executable file
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* @file os_ipc.h
|
||||
* @author LokLiang (lokliang@163.com)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2023-05-01
|
||||
*
|
||||
* @copyright Copyright (c) 2023
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __OS_IPC_H__
|
||||
#define __OS_IPC_H__
|
||||
|
||||
#include "os/os_work.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* #ifdef __cplusplus */
|
||||
|
||||
typedef os_handle_t os_fifo_handle_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
os_fifo_handle_t handle;
|
||||
} os_fifo_t;
|
||||
|
||||
os_state os_fifo_q_create(os_fifo_t *fifo_handle);
|
||||
os_state os_fifo_q_delete(os_fifo_t *fifo_handle);
|
||||
os_state os_fifo_q_clr(os_fifo_t *fifo_handle);
|
||||
|
||||
void os_fifo_q_regist(os_fifo_t *fifo_handle, os_work_t *work_handle, int delay_ticks);
|
||||
void os_fifo_q_unregist(os_fifo_t *fifo_handle);
|
||||
|
||||
void *os_fifo_alloc(size_t size);
|
||||
os_state os_fifo_put(os_fifo_t *fifo_handle, void *fifo_data);
|
||||
|
||||
void *os_fifo_take(os_fifo_t *fifo_handle, os_time_t wait_ms);
|
||||
os_state os_fifo_free(void *fifo_data);
|
||||
|
||||
void *os_fifo_peek_head(os_fifo_t *fifo_handle);
|
||||
void *os_fifo_peek_tail(os_fifo_t *fifo_handle);
|
||||
|
||||
bool os_fifo_q_is_valid(os_fifo_t *fifo_handle);
|
||||
|
||||
typedef os_handle_t os_queue_handle_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
os_queue_handle_t handle;
|
||||
} os_queue_t;
|
||||
|
||||
os_state os_queue_create(os_queue_t *queue_handle, size_t queueLen, size_t itemSize);
|
||||
os_state os_queue_delete(os_queue_t *queue_handle);
|
||||
os_state os_queue_clr(os_queue_t *queue_handle);
|
||||
|
||||
void os_queue_regist(os_queue_t *queue_handle, os_work_t *work_handle, int delay_ticks);
|
||||
void os_queue_unregist(os_queue_t *queue_handle);
|
||||
|
||||
os_state os_queue_send(os_queue_t *queue_handle, const void *item, os_time_t wait_ms);
|
||||
os_state os_queue_recv(os_queue_t *queue_handle, void *item, os_time_t wait_ms);
|
||||
|
||||
void *os_queue_peek_head(os_queue_t *queue_handle);
|
||||
void *os_queue_peek_tail(os_queue_t *queue_handle);
|
||||
|
||||
size_t os_queue_get_item_size(os_queue_t *queue_handle);
|
||||
|
||||
bool os_queue_is_valid(os_queue_t *queue_handle);
|
||||
|
||||
typedef os_handle_t os_pipe_handle_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
os_pipe_handle_t handle;
|
||||
} os_pipe_t;
|
||||
|
||||
os_state os_pipe_create(os_pipe_t *pipe_handle, size_t pipe_size);
|
||||
os_state os_pipe_delete(os_pipe_t *pipe_handle);
|
||||
os_state os_pipe_clr(os_pipe_t *pipe_handle);
|
||||
|
||||
void os_pipe_regist(os_pipe_t *pipe_handle, os_work_t *work_handle, int delay_ticks);
|
||||
void os_pipe_unregist(os_pipe_t *pipe_handle);
|
||||
|
||||
size_t os_pipe_poll_write(os_pipe_t *pipe_handle, uint8_t data);
|
||||
size_t os_pipe_fifo_fill(os_pipe_t *pipe_handle, const void *data, size_t size);
|
||||
size_t os_pipe_poll_read(os_pipe_t *pipe_handle, uint8_t *data);
|
||||
size_t os_pipe_fifo_read(os_pipe_t *pipe_handle, void *data, size_t size);
|
||||
|
||||
bool os_pipe_is_ne(os_pipe_t *pipe_handle);
|
||||
size_t os_pipe_get_valid_size(os_pipe_t *pipe_handle);
|
||||
size_t os_pipe_get_empty_size(os_pipe_t *pipe_handle);
|
||||
|
||||
void os_pipe_peek_valid(os_pipe_t *pipe_handle, void **dst_base, size_t *dst_size);
|
||||
void os_pipe_peek_empty(os_pipe_t *pipe_handle, void **dst_base, size_t *dst_size);
|
||||
|
||||
bool os_pipe_is_valid(os_pipe_t *pipe_handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif /* #ifdef __cplusplus */
|
||||
|
||||
#endif /* __OS_IPC_H__ */
|
||||
Reference in New Issue
Block a user