【转】Linux那些事儿之我是U盘(4)想到达明天,现在就要启程
既然知道了怎么编写一个模块,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难.对自己行不行不确定的话,可以去问一下葛优,他准说:"(神州行),我看行."
真的,我没说假话.写驱动不是什么难事,你完全可以很自信的说,你已经可以写Device Driver了.对,没错,飘柔,就这么自信.
前面说了每一个模块都是以module_init开始,以module_exit结束,那么我们就来看一下U盘的驱动的这个模块.在茫茫人海中,我们很容易找到这个文件:drivers/usb/storage/usb.c,在这个文件中又不难发现下面这段:
/***********************************************************************
1056 * Initialization and registration
1057 ***********************************************************************/
1058
1059 static int __init usb_stor_init(void)
1060 {
1061 int retval;
1062 printk(KERN_INFO "Initializing USB Mass Storage driver.../n");
1063
1064 /* register the driver, return usb_register return code if error */
1065 retval = usb_register(&usb_storage_driver);
1066 if (retval == 0)
1067 printk(KERN_INFO "USB Mass Storage support registered./n");
1068
1069 return retval;
1070 }
1071
1072 static void __exit usb_stor_exit(void)
1073 {
1074 US_DEBUGP("usb_stor_exit() called/n");
1075
1076 /* Deregister the driver
1077 * This will cause disconnect() to be called for each
1078 * attached unit
1079 */
1080 US_DEBUGP("-- calling usb_deregister()/n");
1081 usb_deregister(&usb_storage_driver) ;
1082 }
1083
1084 module_init(usb_stor_init);
1085 module_exit(usb_stor_exit);
其实,module_init/module_exit只是一个宏,通常写模块的人为了彰显自己的个性,会给自己的初始化函数和注销函数另外起个名字,比如这里module_init(usb_stor_init)以及module_exit(usb_stor_exit)实际上就是告诉这个世界,真正的函数是usb_stor_init和usb_stor_exit.这种伎俩在Linux内核代码中屡见不鲜.见多了也就不必大惊小怪了,天要下雨娘要嫁人,随她去吧.我们下面当然就从usb_stor_init正式开始我们的探索之旅.
【转】Linux那些事儿之我是U盘(4)想到达明天,现在就要启程相关推荐
- Linux那些事儿之我是U盘(4)想到达明天,现在就要启程
既然知道了怎么编写一个模块,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难.对自己行不行不确定的话,可以去问一下葛优,他准说:"(神州行),我看行. ...
- 《Linux那些事儿之我是USB》我是U盘(4)想到达明天现在就要启程
既然知道了编写模块的方法,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难. 真的,我没说假话,写驱动不是什么难事,你完全可以很自信地说,你已经可以写 设备驱动 ...
- linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
<Linux 那些事儿之我是 USB> 作者:华清远见 第 1 章 Linux 那些事儿之我是 USB Core 专业始于专注 卓识源于远见 1 .引子 老夫子们痛心疾首地总结说,现代青年 ...
- Linux那些事儿之我是U盘(5)外面的世界很精彩
看代码之前,我曾经认真的思考过这么一个问题,我需要关注的仅仅是drivers/usb/storage/目录下面那相关的3000多行代码吗?就是这样几个文件就能让一个个不同的U盘在Linux下面工作起来 ...
- 转载本论坛 (fudan_abc ) :linux那些事儿之我是u盘(16)冰冻三尺非一日之寒
不是一天建成的 . 在让 U 盘工作之前 , 其实我们的驱动作了很多准备工作 . 我们继续跟着感觉走,storage_probe(),943行至948行,一系列的以init_*命名的函数在此刻被调用, ...
- Linux那些事儿之我是U盘(1)小城故事
这个故事中使用的是2.6.10的内核代码.Linux内核代码目录中, 所有去设备驱动程序有关的代码都在drivers/目录下面,在这个目录中我们用ls命令可以看到很多子目录. localhost:/u ...
- Linux那些事儿之我是U盘--引子
也许是在复旦养成了昼伏夜出的坏习惯,工作之后也总是很晚也不愿意睡.来到北京之后,开始听广播听都市之声的北京不眠夜.这个节目是从23点直到第二天凌晨一点,我常常是听完了才会睡觉.无论是北京还是上海,对我 ...
- Linux那些事儿之我是U盘(50)跟着感觉走(二)
回到usb_stor_invoke_transport()中来,540行,还是老套路,又问是不是命令被放弃了,放弃了当然下面的就别执行了.goto Handle_Abort去. 546行,如果有错误, ...
- Linux那些事儿之我是U盘(51)光荣属于苹果,属于诺基亚,属于摩托罗拉,属于索尼爱立信
这一节我们来分析一个在很多企业的产品中都存在的bug.写设备驱动是一件很实在的事情,你得根据实实在在的硬件来编写你的代码,如果你的硬件存在某种bug,那么你就要去fix它.如果你希望成为通用的驱动程序 ...
最新文章
- 机载雷达发展简史:从蝙蝠到机载相控阵
- linux 解压xz包
- 慎重使用volatile关键字
- Shell脚本案例:批量新增用户
- .NET Core,PostgreSQL和文档数据库
- Puppet 笔记 模板
- HLSL内置函数一览
- 第一模块·开发基础-第1章 Python基础语法
- centos下java编程工具_centos下安装JAVA开发工具(4)------Redis
- 便携主机推荐——ATX电源篇
- css3图片上下浮动动画
- ps钢笔抠图的的引用说明
- MySQL安装图解设置详细教程
- mpc高清设置超详细
- Python输出emoji表情包
- ospf及lsa总结
- 氨氮吹脱法脱与php有关系吗,吹脱法处理氨氮废水
- 通过微信小程序看前端
- 最后3天!生信入门转录组和可视化学习捷径
- Python实例篇:这样操作PDF文件一点都不枯燥了