usb-skeleton.c 之 11---skel_read
来源:互联网 发布:js重定向url带参数 编辑:程序博客网 时间:2024/05/16 14:08
static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
{
struct usb_satkel *dev;
int retval;
int bytes_read;
dev = (struct usb_skel *)file->prive_data; **
mutex_lock(&dev->io_mutex); ** 互斥锁
if (!dev->interface) { /* disconnect() was called */
retval = -ENODEV; **接口打开失败 设备 断开
goto exit;
}
/* do a blocking bulk read to get data from the device */ **做个块批量 读 从设备 获得 数据
retval = usb_bulk_msg(dev->udev, ** 从设备进行一次 阻塞的 批量读
usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointAddr),
dev->bulk_in_buffer,
min(dev->bulk_in_size, count),
&bytes_read, 10000);
/* if the read was successful, copy the data to userspace */ **假如读成功 复制数据到 用户空间
if (!retval) {
if (copy_to_user(buffer, dev->bulk_in_buffer, bytes_read))
retval = -EFAULT;
else
retval = bytes_read;
}
exit:
mutex_unlock(&dev->io_mutex);
return retval;
}
- usb-skeleton.c 之 11---skel_read
- usb-skeleton.c 之 08---skel_open
- usb-skeleton.c 之 09---skel_release
- usb-skeleton.c 之 10---skel_flush
- usb-skeleton.c 之 12---skel_write_bulk_callback
- usb-skeleton.c 之 13---skel_write
- usb-skeleton.c 之 14--- file_operations
- usb-skeleton.c 之 15--- usb_class_driver
- usb-skeleton.c 之 16---skel_probbe 重头戏
- usb-skeleton.c 之 17--- skel_disconnect
- usb-skeleton.c 之 20--- init exit
- usb-skeleton.c 之 21-- 大结局
- usb-skeleton.c 之 08---skel_open
- usb-skeleton.c简介
- usb-skeleton.c
- usb-skeleton.c
- usb-skeleton.c 之 01--首先整体欣赏欣赏usb-skeleton.c 多的了得!!
- usb-skeleton.c 之00----起步usb骨架程序!!!
- 成熟的人该拥有的境界
- bat文件安装windows服务
- 用ondrag事件简单的实现鼠标拖动物件
- 全面讲述Lucene3.0的Lucene In Action(第二版)出来了
- Hibernate HQL查询必知
- usb-skeleton.c 之 11---skel_read
- Cent OS上配置Apache2 + SVN
- 基准比对过程和模型
- do...while(0)
- 批处理命令大全
- 《PHP Cookbook》学习笔记(六)
- usb-skeleton.c 之 12---skel_write_bulk_callback
- Continuation in LISP
- 实战Linux Bluetooth编程 (七) SDP协议