linux 3.8.0版本内核usbmouse.c文件代码注释

/* * Copyright (c) 1999-2001 Vojtech Pavlik

* * USB HIDBP Mouse support

*/

/* * This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or

* (at your option) any later version. *

* This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.

* * You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

* * Should you need to contact me, the author, you can do so either by

* e-mail - mail your message to , or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic

*/

#include #include

#include #include

#include #include

/* for apple IDs */

#ifdef CONFIG_USB_HID_MODULE#include "../hid-ids.h"

#endif

/* * Version Information

*/#define DRIVER_VERSION "v1.6"

#define DRIVER_AUTHOR "Vojtech Pavlik "#define DRIVER_DESC "USB HID Boot Protocol mouse driver"

#define DRIVER_LICENSE "GPL"

MODULE_AUTHOR(DRIVER_AUTHOR);MODULE_DESCRIPTION(DRIVER_DESC);

MODULE_LICENSE(DRIVER_LICENSE);

struct usb_mouse {char name[128];/* 鼠标设备的名称,包括生产厂商、产品类别、产品等信息 */

char phys[64];/* 设备节点名称 */ struct usb_device *usbdev;/* USB 鼠标是一种 USB 设备,需要内嵌一个 USB 设备结构体来描述其 USB 属性 */ struct input_dev *dev;/* USB 鼠标同时又是一种输入设备,需要内嵌一个输入设备结构体来描述其输入设备的属性 */ struct urb *irq;/* URB 请求包结构体,用于传送数据 */

signed char *data;/* 普通传输用的地址 ,将保存着鼠标的按键和移动坐标信息*/

dma_addr_t data_dma;/* dma 传输用的地址 */ };

/*

* urb 回调函数,在完成提交 urb 后,urb 回调函数将被调用。 * 此函数作为 usb_fill_int_urb 函数的形参,为构建的 urb 制定的回调函数。

*/ static void usb_mouse_irq(struct urb *urb)

{ /*

* urb 中的 context 指针用于为 USB 驱动程序保存一些数据。比如在这个回调函数的形参没有传递在 probe * 中为 mouse 结构体分配的那块内存的地址指针,而又需要用到那块内存区域中的数据,context 指针则帮了 * 大忙了! * 这里的context就是保存了一个usb_mouse结构

* 在填充 urb 时将 context 指针指向 mouse 结构体数据区,在这又创建一个局部 mouse 指针指向在 probe * 函数中为 mouse 申请的那块内存,那块内存保存着非常重要数据。

* 当 urb 通过 USB core 提交给 hc 之后,如果结果正常,mouse->data 指向的内存区域将保存着鼠标的按键 * 和移动坐标信息,系统则依靠这些信息对鼠标的行为作出反应。

* mouse 中内嵌的 dev 指针,指向 input_dev 所属于的内存区域。 */

struct usb_mouse *mouse = urb->context;signed char *data = mouse->data;

struct input_dev *dev = mouse->dev;

linux3.8内核下载,linux 3.8内核usbmouse代码注释相关推荐

  1. linux加大ram 内核需要,Linux 5.1内核发布:io_uring接口+支持持久性内存用作RAM

    拼 命 加 载 中 ... Linus Torvalds今天发布了Linux Kernel 5.1内核,这是一个功能强大的内核分支,它带来了许多重要的新功能,包括但不限于:改进了对Intel Fast ...

  2. linux 内核维护,Linux 4.18内核系列生命周期结束:用户需尽快更新内核

    IT之家11月28日消息 著名的Linux内核维护者Greg Kroah-Hartman宣布Linux 4.18内核系列的生命周期结束,敦促用户尽快将他们的发行版升级到更新的内核. Linux 4.1 ...

  3. 手机linux内核下载,Linux Kernel

    游戏概述 Linux Kernelapp下载,最新版本的Linux内核,支持Intel.Alpha.PPC.Sparc.IA-64 .ARM.MIPS.Amiga.Atari和IBM s/390等.L ...

  4. linux pae内核安装,Linux 安装PAE内核

    客户软件是部署在32位的CentOS5服务器当中,CentOS5目前只能识别4G内存,需要安装PAE内核,让系统支持PAE物理地址扩展. 1.安装PAE内核 yum -y install kernel ...

  5. linux 2.4内核编译,linux 2.4内核编译详解

    2.4内核编译详解 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内 ...

  6. linux内核自解压,Linux的初始内核自解压分析

    Linux的初始内核自解压分析 (2009-03-27 19:46:46) 标签: it Linux的初始内核解压 2007-09-19 15:02 来源:论坛整理 作者:lucian_yao [网友 ...

  7. linux内核计数函数,linux中的内核引用计数器

    linux中的内核引用计数器文档 /Documentation/kref.txt翻译. krefs能让你往你的对象中添加一个引用计数器.如果你有一些需要在多处被使用和传递的对象,而你并没有给这些对象中 ...

  8. linux 内核 触摸屏,Linux 5.1内核将支持更多的触摸屏

    开发中的Linux 5.1内核的输入子系统更新包括许多触摸屏驱动程序添加. 输入维护者Dmitry Torokhov为下一个内核版本发送了许多触摸屏驱动程序更新.亮点包括: - 支持ili210x驱动 ...

  9. linux 内核 cpio,Linux 2.6内核cpio initrd释放资源的处理

    以前一直在使用image-initrd的格式,也就是Linux 2.4内核当中所使用的格式,即便在升级到2.6内核以后,也依然如此,虽然2.6内核开始支持新的cpio-initrd格式.最近开始转向c ...

最新文章

  1. WebSphere安装
  2. WPF加载程序集中字符串资源
  3. 对mysql的总结与反思_深入了解MySQL,一篇简短的总结
  4. linux java 查找进程中的线程
  5. Linux简单命令收录(who,echo,date)【上】
  6. WinSock I/O 模型 -- IOCP 模型
  7. C#LeetCode刷题之#189-旋转数组(Rotate Array)
  8. 距离向量路由算法及举例
  9. 单片机 c语言 pwm输出,单片机中PWM程序工作原理图文详解
  10. 操作系统—处理机调度
  11. Three.js 学习笔记 - 给跳一跳小游戏添加光源,阴影
  12. Cisco路由器配置命令
  13. 分布式系统与海量数据处理
  14. 51单片机自学--PWM波占空比程序解释
  15. 盘点2017 CES展会所有亮眼黑科技 (下)
  16. 【JavaScript笔记 · 基础篇(五)】Array全家桶(引用数据类型中的数组 / Array对象 / Array.prototype)
  17. R语言ggplot2可视化:使用ggpubr包的arrangeGrob函数将多个可视化结果整合为gtable对象、使用as_ggplot函数将gtable对象转化为ggplot对象
  18. 【STM32F429的DSP教程】第3章 Matlab简易使用之基础操作
  19. Oracle 19c VLDB and Partitioning Guide 第4章:分区管理 读书笔记
  20. 我的物联网项目(二十五) 平账难题分析

热门文章

  1. 数据爆炸时代,云存储在“破圈”!
  2. 作为多年 PHP 的开发者,在使用了 Go 语言之后......
  3. 趣谈 JOIN 操作
  4. BAT 数据披露:缺人!110万AI人才缺口,两者矛盾,凉凉了!
  5. 500+ 精选 Java 面试题大放送
  6. 做好以下四点,拒做 “ 空心 ” 程序员 | CSDN 博文精选
  7. AI 降噪、多平台支持,在线课程背后的黑科技大公开!
  8. 蘑菇车联召开战略发布会 为用户提供无缝衔接的“人车生活”
  9. Facebook 的 AI 翻身之战!
  10. 从初级程序员逆袭为技术大牛,你需要懂这 10 项技术!