zl程序教程

Linux 内核块 urb

  • 学习Linux内核:从入门到精通GURB(linuxgurb)

    学习Linux内核:从入门到精通GURB(linuxgurb)

    Linux内核是一款非常流行的开源操作系统,它在许多领域都取得了比较大的成功,比如超级计算机,嵌入式计算机和服务器。学习Linux内核可以帮助您熟悉操作系统在原理上是如何运行的,这些知识对于您未来的编程学习和工作有着重要的意义。 学习Linux内核从入门到精通一般需要一段时间,您可以按照以下步骤慢慢地学习: 1. 首先,有必要学习一些操作系统的基本概念,如进程、线程、虚拟内存、I/O等。

    日期 2023-06-12 10:48:40     
  • Linux 内核提交和控制一个 urb

    Linux 内核提交和控制一个 urb

    当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备.   urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; }   在 urb 被成功分配后, 一个 DMA 缓冲也应当被创建来发送数据到设备以最有效的

    日期 2023-06-12 10:48:40     
  • Linux 内核提交和控制一个 urb

    Linux 内核提交和控制一个 urb

    当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备.   urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; }   在 urb 被成功分配后, 一个 DMA 缓冲也应当被创建来发送数据到设备以最有效的

    日期 2023-06-12 10:48:40     
  • Linux 内核取消 urb

    Linux 内核取消 urb

    为停止一个已经提交给 USB 核心的 urb, 函数 usb_kill_urb 或者 usb_unlink_urb 应 当被调用:   int usb_kill_urb(struct urb *urb); int usb_unlink_urb(struct urb *urb); The urb parameter for both of these functions is a poi

    日期 2023-06-12 10:48:40     
  • Linux 内核完成 urb: 完成回调处理者

    Linux 内核完成 urb: 完成回调处理者

    如果对 usb_submit_urb 的调用成功, 传递对 urb 的控制给 USB 核心, 这个函数返回 0; 否则, 一个负错误值被返回. 如果函数成功, urb 的完成处理者(如同被完成函数指针指 定的)被确切地调用一次, 当 urb 被完成. 当这个函数被调用, USB 核心完成这个 urb, 并且对它的控制现在返回给设备驱动.   只有 3 个方法, 一个 urb 可被结束

    日期 2023-06-12 10:48:40     
  • Linux 内核提交 urb

    Linux 内核提交 urb

    一旦 urb 被正确地创建,并且被 USB 驱动初始化, 它已准备好被提交给 USB 核心来发送 出到 USB 设备. 这通过调用函数 usb_submit_urb 实现:   int usb_submit_urb(struct urb *urb, int mem_flags);   urb 参数是一个指向 urb 的指针, 它要被发送到设备. mem_flags 参数等同于

    日期 2023-06-12 10:48:40     
  • Linux 内核提交 urb

    Linux 内核提交 urb

    一旦 urb 被正确地创建,并且被 USB 驱动初始化, 它已准备好被提交给 USB 核心来发送 出到 USB 设备. 这通过调用函数 usb_submit_urb 实现:   int usb_submit_urb(struct urb *urb, int mem_flags);   urb 参数是一个指向 urb 的指针, 它要被发送到设备. mem_flags 参数等同于

    日期 2023-06-12 10:48:40     
  • Linux 内核同步 urb

    Linux 内核同步 urb

    不幸的是, 同步 urb 没有一个象中断, 控制, 和块 urb 的初始化函数. 因此它们必须在 驱动中"手动"初始化, 在它们可被提交给 USB 核心之前. 下面是一个如何正确初始化这 类 urb 的例子. 它是从 konicawc.c 内核驱动中取得的, 它位于主内核源码树的 drivers/usb/media 目录.   urb->dev = dev; urb->c

    日期 2023-06-12 10:48:40     
  • Linux 内核控制 urb

    Linux 内核控制 urb

    控制 urb 被初始化几乎和 块 urb 相同的方式, 使用对函数 usb_fill_control_urb 的 调用:   void usb_fill_control_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char *setup_packet, void *transfer_b

    日期 2023-06-12 10:48:40     
  • Linux 内核块 urb

    Linux 内核块 urb

    块 urb 被初始化非常象中断 urb. 做这个的函数是 usb_fill_bulk_urb, 它看来如此: void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev,   unsigned int pipe, void *transfer_buffer, int buffer_length, usb_comple

    日期 2023-06-12 10:48:40     
  • Linux 内核 中断 urb

    Linux 内核 中断 urb

    函数 usb_fill_int_urb 是一个帮忙函数, 来正确初始化一个 urb 来发送给 USB 设备的 一个中断端点:   void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb

    日期 2023-06-12 10:48:40     
  • Linux内核 结构 struct urb

    Linux内核 结构 struct urb

    struct urb 结构中和 USB 设备驱动有关的成员是: struct usb_device *dev 指向这个 urb 要发送到的 struct usb_device 的指针. 这个变量必须被 USB 驱 动初始化, 在这个 urb 被发送到 USB 核心之前.   unsigned int pipe   端点消息, 给这个 urb 要被发送到的特定 struct

    日期 2023-06-12 10:48:40