struct urb 结构在驱动中必须不被静态创建, 或者在另一个结构中, 因为这可能破坏 USB 核心给 urb 使用的引用计数方法. 它必须使用对 usb_alloc_urb 函数的调用而被创 建. 这个函数有这个原型:

struct urb *usb_alloc_urb(int iso_packets, int mem_flags);

第一个参数, iso_packet, 是这个 urb 应当包含的同步报文的数目. 如果你不想创建一 个同步 urb, 这个变量应当被设置为 0. 第 2 个参数, mem_flags, 是和传递给 kmalloc 函数调用来从内核分配内存的相同的标志类型(见"flags 参数"一节, 第 8 章, 关于这些 标志的细节). 如果这个函数在分配足够内存给这个 urb 成功, 一个指向 urb 的指针被 返回给调用者. 如果返回值是 NULL, 某个错误在 USB 核心中发生了, 并且驱动需要正确 地清理.

在创建了一个 urb 之后, 它必须被正确初始化在它可被 USB 核心使用之前. 如何初始化 不同类型 urb 见下一节

为了告诉 USB 核心驱动用完这个 urb, 驱动必须调用 usb_free_urb 函数. 这个函数只 有一个参数:

void usb_free_urb(struct urb *urb);

参数是一个指向你要释放的 struct urb 的指针. 在这个函数被调用之后, urb 结构消失, 驱动不能再存取它.

最新文章

  1. 锋利的jQuery--Ajax(读书笔记四)
  2. Java 修饰符
  3. struts2 笔记04 杂记
  4. Linux运行变量中的命名脚本
  5. Chart Style
  6. BZOJ3039: 玉蟾宫&wikioi2491 玉蟾宫
  7. Qt 学习之路:输入元素
  8. Struts 2 OGNL
  9. RH133读书笔记(8)-Lab 8 Manage Network Settings
  10. CALayer & UIView 关系浅析
  11. nmcli命令大集合
  12. 为什么说Python 是大数据全栈式开发语言
  13. js高阶函数应用—函数防抖和节流
  14. Arduino语法-变量和常量
  15. Ubuntu 14.04 升级 nginx/1.8.1
  16. es6箭头函数 this 指向问题
  17. easyui combobox 去空格事件 去掉,结果输入空格体验不畅的感觉,让combobox能够输入空格
  18. [SpringBoot]Web综合开发-笔记
  19. (递推 大整数) Children’s Queue hdu1297
  20. A + B 问题

热门文章

  1. python 临时修改模块搜索路径
  2. PHPCMS快速建站系列之pc:get标签的应用
  3. 解决VS+Qt不生成moc文件问题
  4. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第九章:贴图
  5. SED总结, mac上要加备份文件名,sort命令和对中文的处理
  6. 关于Lattice Planner规划算法的若干问答
  7. Oracle基础学习4--Oracle权限传递
  8. C++中文本的读入
  9. [Offer收割]编程练习赛108 - 树上的最短边 树链剖分
  10. Android Animation动画实战(二):从屏幕底部弹出PopupWindow