管道

优质
小牛编辑
132浏览
2023-12-01

管道接口

函数

rt_err_t rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
 打开管道
 
rt_err_t rt_pipe_close (rt_device_t device)
 关闭管道
 
rt_size_t rt_pipe_read (rt_device_t device, rt_off_t pos, void *buffer, rt_size_t count)
 从管道读取数据
 
rt_size_t rt_pipe_write (rt_device_t device, rt_off_t pos, const void *buffer, rt_size_t count)
 向管道写入数据
 
rt_pipe_trt_pipe_create (const char *name, int bufsz)
 创建管道
 
int rt_pipe_delete (const char *name)
 删除管道
 

详细描述

管道接口

函数说明

rt_err_t rt_pipe_open(rt_device_t device,
rt_uint16_t oflag 
)

打开管道

此函数打开管道,实际创建管道缓冲区。

参数
device设备句柄
oflag打开方式
返回
-RT_EINVAL 设备句柄为空;RT_EOK 打开成功
rt_err_t rt_pipe_close(rt_device_t device)

关闭管道

此函数关闭指定管道,销毁其数据缓冲区。

参数
device设备句柄
返回
-RT_EINVAL 设备句柄为空;RT_EOK 关闭成功
rt_size_t rt_pipe_read(rt_device_t device,
rt_off_t pos,
void * buffer,
rt_size_t count 
)

从管道读取数据

往管道中读取指定长度数据。

参数
device设备句柄
pos与POSIX 标准接口兼容的参数(目前没有意义,传入0即可)
buffer读管道数据的存储区的指针
count待读取数据的大小
返回
成功返回读取数据字节数;设备句柄为空或待读取数据字节数为0时返回0。
rt_size_t rt_pipe_write(rt_device_t device,
rt_off_t pos,
const void * buffer,
rt_size_t count 
)

向管道写入数据

往管道中写入指定长度数据。

参数
device设备句柄
pos与POSIX 标准接口兼容的参数(目前没有意义,传入0即可)
buffer待写入数据的缓冲区指针
count待写入数据的大小
返回
成功返回实际写入的字节数;设备句柄为空或待读取数据字节数为0时返回0。
rt_pipe_t* rt_pipe_create(const char * name,
int bufsz 
)

创建管道

调用该函数创建管道,系统会从动态堆内存中分配一个管道句柄,并对管道句柄按照指定值初始化,然后向系统注册管道设备。

参数
name管道名称
bufsz缓冲区大小
返回
创建成功则返回管道控制块;创建失败时返回RT_NULL。
int rt_pipe_delete(const char * name)

删除管道

调用该函数删除指定名称的管道设备,并释放其所占的内存空间。

参数
name管道名称
返回
0 删除成功;-RT_EBUSY 使用中,删除失败;-ENODEV 为找到设备或设备部位管道类型。