pipe.h 805 字节
Newer Older
1 2 3 4 5 6 7 8
/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 */
B
bernard 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#ifndef PIPE_H__
#define PIPE_H__

/**
 * Pipe Device
 */
#include <rtthread.h>
#include <rtdevice.h>

#ifndef RT_PIPE_BUFSZ
#define PIPE_BUFSZ    512
#else
#define PIPE_BUFSZ    RT_PIPE_BUFSZ
#endif

struct rt_pipe_device
{
26
    struct rt_device parent;
B
bernard 已提交
27

28 29
    /* ring buffer in pipe device */
    struct rt_ringbuffer *fifo;
30
    rt_uint16_t bufsz;
B
bernard 已提交
31

32 33
    rt_uint8_t readers;
    rt_uint8_t writers;
B
bernard 已提交
34

35 36
    rt_wqueue_t reader_queue;
    rt_wqueue_t writer_queue;
B
bernard 已提交
37

38
    struct rt_mutex lock;
B
bernard 已提交
39 40 41
};
typedef struct rt_pipe_device rt_pipe_t;

42
rt_pipe_t *rt_pipe_create(const char *name, int bufsz);
43
int rt_pipe_delete(const char *name);
44
#endif /* PIPE_H__ */