1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero */ 9*10465441SEvalZero #ifndef PIPE_H__ 10*10465441SEvalZero #define PIPE_H__ 11*10465441SEvalZero 12*10465441SEvalZero /** 13*10465441SEvalZero * Pipe Device 14*10465441SEvalZero */ 15*10465441SEvalZero #include <rtthread.h> 16*10465441SEvalZero #include <rtdevice.h> 17*10465441SEvalZero 18*10465441SEvalZero #ifndef RT_PIPE_BUFSZ 19*10465441SEvalZero #define PIPE_BUFSZ 512 20*10465441SEvalZero #else 21*10465441SEvalZero #define PIPE_BUFSZ RT_PIPE_BUFSZ 22*10465441SEvalZero #endif 23*10465441SEvalZero 24*10465441SEvalZero struct rt_pipe_device 25*10465441SEvalZero { 26*10465441SEvalZero struct rt_device parent; 27*10465441SEvalZero 28*10465441SEvalZero /* ring buffer in pipe device */ 29*10465441SEvalZero struct rt_ringbuffer *fifo; 30*10465441SEvalZero rt_uint16_t bufsz; 31*10465441SEvalZero 32*10465441SEvalZero rt_uint8_t readers; 33*10465441SEvalZero rt_uint8_t writers; 34*10465441SEvalZero 35*10465441SEvalZero rt_wqueue_t reader_queue; 36*10465441SEvalZero rt_wqueue_t writer_queue; 37*10465441SEvalZero 38*10465441SEvalZero struct rt_mutex lock; 39*10465441SEvalZero }; 40*10465441SEvalZero typedef struct rt_pipe_device rt_pipe_t; 41*10465441SEvalZero 42*10465441SEvalZero rt_pipe_t *rt_pipe_create(const char *name, int bufsz); 43*10465441SEvalZero int rt_pipe_delete(const char *name); 44*10465441SEvalZero #endif /* PIPE_H__ */ 45