374行,us->proto_handler()其实是一个函数指针,知道它指向什么吗?我们早在storage_probe()中,确切地说,在get_protocol()就赋了值,当时只知道是get protocol,却不知道究竟干什么用,现在该用上了,一个指针要是...
374行,us->proto_handler()其实是一个函数指针,知道它指向什么吗?我们早在storage_probe()中,确切地说,在get_protocol()就赋了值,当时只知道是get protocol,却不知道究竟干什么用,现在该用上了,一个指针要是...
也没有问题。然后开始在LD_LIBRARY_PATH中添加环境变量,发现也不行。tnnd,见鬼了,这不是明摆着系统是睁眼瞎吗?思考了良久,确认代码本身也没问题,路径不是问题,链接的流程也木有问题,还有什么可能呢?...
Linux线程同步
罗马不是一天建成的。在让U盘工作之前,其实我们的驱动做了很多准备工作。 我们继续跟着感觉走,storage_probe(),972行至975行,一系列的以init_*命名的函数在此刻被调用,这里涉及了一些锁机制,等待机制,不过...
这个故事中使用的是2.6.22的内核代码。
洗完了要按摩就按摩,不按摩就开个房间,睡一晚上,有那种89块钱的三人间,费用比那些宾馆要便 宜许多,很适合我们这种夜生活丰富,不想回家睡的家伙.不过权金城很奇怪的,不提供特殊服务,我们问过两次,都说没有,于是我就...
有人问,怎么写一个驱动写这么久啊? 的确,一路走来,大家都不容易,但既然已经走到今天,我们能做的也只有是坚持下去。 usb_stor_acquire_resources(),从名字上来看是获取资源。什么是资源?...
windows与linux进程同步及线程同步方法归纳
。。。
...
在讲数据传输阶段之前,先解决刚才的历史遗留问题。usb_stor_bulk_transfer_buf()中,406行,有一个很有趣的函数interpret_urb_result()被调用。这个函数同样来自drivers/usb/storage/transport.c中: ...
这一切,不禁让人产生了一种幻觉,让人分不清故事从哪里开始,又从哪里结束,一切都太短暂了。仿佛开始在结束时开始,而结束却在开始时就早已结束。
我们继续接着上一节往下看。fill_inquiry_response(),这个函数来自drivers/usb/storage/usb.c中。 266 void fill_inquiry_response(struct us_data *us,unsigned char *data, 267 unsigned int data_len) ...
对于use_sg为0的情况,我们接下来再看168行,offset是函数调用传递进来的参数,注释里说得很清楚,就是用来标志偏移量的,每次复制几个字节它就增加几个字节,最大它也不能超过request_bufflen,这是显然的。...
storage_probe这个函数挺有意思,总长度不足100行,但是干了许多事情,这就像足球场上的后腰,比如切尔西的马克莱莱,在场上并不起眼,但是却为整个团队做出了卓越的贡献。 我们继续看storage_probe的代码: ...
彼岸花,花语是悲伤的回忆。 很久很久以前,城市的边缘开满了大片大片的曼珠沙华,它的花香有一种魔力,可以让人想起自己前世的事情。守护曼珠沙华的是两个妖精,一个是花妖叫曼珠,一个是叶妖叫沙华。...
在usb_stor_Bulk_transport()中,这个函数中调用的第一个最重要的函数,那就是usb_stor_bulk_transfer_buf()。仍然是来自drivers/usb/stroage/transport.c: 391 int usb_stor_bulk_transfer_buf(struct us_data*...
前面已经说了,回到usb_stor_acquire_resources()函数中,返回了0。于是咱们终于回到了storage_probe()函数中来。 1008行,scsi_add_host()函数被执行,之前申请的us->host被作为参数传递给它,同时,intf->dev也被...
标签: linux
其实没有最好的linux,都得靠你挨个儿去挑,看他的公司,Debian,Slackware,Red hat。 Fedora用得比较顺手。 我对fedora的评价:网址
解决了这个INQUIRY的问题,我们就可以继续往下走了,372行,这就是真正的批量传输的地方,proto_handler()就是正儿八经的处理SCSI命令的函数指针。而usb_stor_control_thread之前的所有代码就是为了判断是不是有必要...
真的,我没说假话,写驱动不是什么难事,你完全可以很自信地说,你已经可以写设备驱动了。对,没错,“飘柔,就这么自信。”
其实故事已经讲了很久,但如果你觉得到这里你已经把故事都看明白了,那么你错了。不仅仅是错了。不信,我们就继续看,先看512行,us->transport(),这个函数指针同样是在storage_probe时被赋值,对于U盘,它遵守的是...
标签: linux
http://blog.csdn.net/aaronychen/category/362878.aspx?PageNumber=6
导读: 新一篇: Linux那些事儿 之 戏说USB(9)我是谁 | 旧一篇: Linux那些事儿 之 戏说USB(7)我是一棵树(二)奥义是什么?看过圣斗士不?人是人他妈生的,妖是妖他妈生的,大家都是讨口饭吃,不用这么耍我吧。 那么...
任何事物都有其要遵守的规矩。USB设备要遵循的就是USB协议。 不管是软件还是硬件,在设计的开始,总是要参考USB协议。怎么设计硬件?如何编写软件?不看USB协议,谁也不可能凭空想象出来。
Linux设备模型中三个很重要的概念就是总线、设备和驱动,即bus、device和driver。而实际上内核中也定义了这么一些数据结构,他们是structbus_type,struct device,struct device_driver,这三个重要的数据结构都...
struct bus_type中为设备和驱动准备了两个链表,而代表设备的结构体struct device中又有两个成员,struct bus_type *bus和struct device_driver *driver。同样,代表驱动的结构体struct de
SDK
有一天身子问心:"我要是痛了,医生会给我治,你痛了谁给你治啊?"于是心说:"我只能自己给自己治."也许因为这样,每个人都有一个治疗自己心中伤痛的方法.喝酒,唱歌,发火,或哭或笑,跟朋友诉苦,共旅行,跑马拉松,最差的一种...
关于linux设备模型网上有一些论述,有些东西我就用了拿来主义,进行了修改和整理。§1 KobjectKobject 是Linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有...