usb_control_msg 函数就像 usb_bulk_msg 函数, 除了它允许一个驱动发送和结束 USB 控制信息:

int usb_control_msg(struct usb_device *dev, unsigned int pipe, u8 request, u8 requesttype,   u16 value,   u16 index, void *data,   u16 size, int timeout);

这个函数的参数几乎和 usb_bulk_msg 的相同, 有几个这样的不同: struct usb_device *dev

指向发送控制消息去的 USB 设备的指针. unsigned int pipe

控制消息要发送到的 USB 设备的特定端点. 这个值在 usb_sndctrlpipe 或者 usb_rcvctrlpipe 函数中被创建.

u8 request

这个控制消息的 USB 请求值.

u8 requesttype

这个控制消息的 USB 请求类型.

u16 value

这个控制消息的 USB 消息值.

u16 index

这个控制消息的 USB 消息索引值. void *data

如果是一个 OUT 端点, 是一个指向要发送到设备的数据的指针. 如果是一个 IN 端点, 是一个在被从设备读取后数据被放置的地方的指针.

u16 size

被 data 参数指向的缓冲的大小. int timeout

时间量, 以嘀哒计, 应当在超时前等待的. 如果这个值是 0, 这个函数将等待消息 结束.

如果函数是成功的, 它返回被传送到或从这个设备的字节数. 如果它不成功, 它返回一个 负错误码.

参数 request, requesttype, value, 和 index 都直接映射到 USB 规范给一个 USB 控 制消息如何被定义. 对于更多的关于这些参数的有效值的信息和它们如何被使用, 见 USB 规范的第 9 章.

象 usb_bulk_msg 函数, 函数 usb_control_msg 不能被从中断上下文或者持有自旋锁中 被调用. 还有, 这个函数不能被任何其他函数取消, 所以当使用它时要小心; 确认你的驱 动的 disconnect 函数了解足够多, 在允许它自己被从内存卸载之前完成等待调用.

Linux 内核 usb_control_msg 接口的更多相关文章

  1. linux内核seq_file接口

    seq相关头文件linux/seq_file.h,seq相关函数的实现在fs/seq_file.c.seq函数最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的 ...

  2. Linux 内核USB 接口配置

    USB 接口是自己被捆绑到配置的. 一个 USB 设备可有多个配置并且可能在它们之间转换 以便改变设备的状态. 例如, 一些允许固件被下载到它们的设备包含多个配置来实现这个. 一个配置只能在一个时间点 ...

  3. Linux 内核class_simple 接口

    class_simple 接口意图是易于使用, 以至于没人会抱怨没有暴露至少一个包含设备的被 分配的号的属性. 使用这个接口只不过是一对函数调用, 没有通常的和 Linux 设备模型 关联的样板. 第 ...

  4. Linux 内核usb_bulk_msg 接口

    usb_bulk_msg 创建一个 USB 块 urb 并且发送它到特定的设备, 接着在返回到调用者之 前等待完成. 它定义为: int usb_bulk_msg(struct usb_device ...

  5. 【request_firmware】 linux内核下载模块固件接口【转】

    转自:http://blog.csdn.net/magod/article/details/6049558 [-] 8 处理固件 1481 内核固件接口 1482 它如何工作 14.8. 处理固件 作 ...

  6. 【引用】Linux 内核驱动--多点触摸接口

    本文转载自James<Linux 内核驱动--多点触摸接口>   译自:linux-2.6.31.14\Documentation\input\multi-touch-protocol.t ...

  7. Linux Kernel(Android) 加密算法汇总(三)-应用程序调用内核加密算法接口

    于Linux Kernel(Android) 加密算法总结(cipher.compress.digest)文章中.介绍了怎样在内核中增加三种不同类型的内核加密算法, 并给出了在内核模块中怎样调用他们的 ...

  8. linux内核中的排序接口--sort函数

    linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort: qsort 的函数原型是 void qsort(void*base,size_t num,size_t wi ...

  9. Linux内核驱动之GPIO子系统API接口概述

    1.前言 在嵌入式Linux开发中,对嵌入式SoC中的GPIO进行控制非常重要,Linux内核中提供了GPIO子系统,驱动开发者在驱动代码中使用GPIO子系统提供的API函数,便可以达到对GPIO控制 ...

随机推荐

  1. js表格拖拽

    html部分 <div id="chenkbox"> <div id="tableSort"> <ol> <li> ...

  2. padas操作

    1.从excel读取数据 pd.read_excel('naifen.xlsx') 2.保存为excel pd.to_excel('bb.xlsx') 3.统计某一列重复数据 df.groupby([ ...

  3. TCP之单项通信

    TestServer.java package com.sxt.tcp; /* * 服务端 */ import java.io.DataInputStream; import java.io.IOEx ...

  4. vue-router2.0的用法

    随着vue越来越火,而vue-router却是一个项目不可或缺的,所以在这里结合实例总结一下router的用法,也是给自己的一个总结. 1.首先第一步当然是安装vue-router依赖,当然也可直接s ...

  5. @atcoder - ARC066F@ Contest with Drinks Hard

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定序列 T1, T2, ... TN,你可以从中选择一些 Ti ...

  6. CF1054F Electric Scheme

    CF1054F Electric Scheme  其实没啥的. 离散化后,每行每列选择一个. 但是可能会相交 每行或每列相邻两个点成为一小段. 小段按照行列左右部点 小段有交,连inf边,每个s-左, ...

  7. DAMICON'S LIST OF OPEN SOFTWARE

    http://www.damicon.com/resources/opensoftware.html DAMICON'S LIST OF OPEN SOFTWARE This List of Open ...

  8. 6、mysql的安装

    1.安装mysql-Server,并输入root密码 sudo apt-get install mysql-server 2.安装mysql客户端 sudo apt-get install mysql ...

  9. laravel 5.6 请教邮件中的cc,bcc是什么意思,有什么用?

    cc指抄送 bcc指暗送. cc:carbon copy bcc:blind carbon copy

  10. 使用php函数ini_set()重新设置某个配置的设置值

    使用PHP的ini_set()函数 ini_set (PHP 4, PHP 5, PHP 7) ini_set — 为一个配置选项设置值 说明 string ini_set ( string $var ...