driver/usb/sub-skeleton.c 解释
yuweixian
好好学习
展开
-
usb-skeleton.c 之 05-- struct usb-skel 赏析
/* Structure to hold all of our device specific stuff */这个结构体的名字有开发人员自定义,它描述的是该驱动拥有的所有资源及状态: struct usb_skel { struct usb_device *udev; /* the usb device for this device */ struct usb_interface *interface; /* the interface原创 2010-07-06 10:21:00 · 1369 阅读 · 0 评论 -
usb-skeleton.c 之 20--- init exit
<br />static int __init usb_skel_init(void)<br />{<br /> int result;<br /><br /> /* register this driver with the USB subsystem */<br /> result = usb_register(&skel_driver);<br /> if (result)<br /> err("usb_register failed. E原创 2010-07-06 16:22:00 · 573 阅读 · 0 评论 -
usb-skeleton.c 之 02--写在头文件之前的某某某
<br />/*<br /> * USB Skeleton driver - 2.2<br /> *<br /> * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com)<br /> *<br /> * This program is free software; you can redistribute it and/or<br /> * modify it under the t原创 2010-07-05 20:42:00 · 863 阅读 · 0 评论 -
usb-skeleton.c 之 03--那些个头头文文件件们
#include #include #include #include #include #include #include #include #include原创 2010-07-05 20:44:00 · 929 阅读 · 0 评论 -
usb-skeleton.c 之 04-ID变量 那些个厂 那些个 设备的 ID
/* Define these values to match your devices */#define USB_SKEL_VENDOR_ID 0xfff0#define USB_SKEL_PRODUCT_ID 0xfff0/* table of devices that work with this driver */static struct usb_device_id skel_table [] = { { USB_DEVICE(USB_SKEL_VENDOR原创 2010-07-05 21:22:00 · 1021 阅读 · 0 评论 -
usb-skeleton.c 之 06-- 中间的contain_of()
********************************************************#define to_skel_dev(d) container_of(d, struct usb_skel, kref)static struct usb_driver skel_driver;static void skel_draw_down(struct usb_skel *dev);*************************************************原创 2010-07-06 11:17:00 · 941 阅读 · 0 评论 -
usb-skeleton.c 之 07--接下去的 。。。skel_delete()
dd原创 2010-07-06 11:54:00 · 706 阅读 · 0 评论 -
usb-skeleton.c 之 08---skel_open
static int skel_open(struct inode *inode, struct file *file){ struct usb_skel *dev; struct usb_interface *interface; int subminor; int retval = 0; subminor = iminor(inode); interface = usb_find_interface(&skel_driver, submin原创 2010-07-06 13:33:00 · 882 阅读 · 0 评论 -
usb-skeleton.c 之 09---skel_release
static int skel_release(struct inode *inode, struct file *file){ struct usb_skel *dev; dev = (struct usb_skel *)file->private_data; if (dev == NULL) return -ENODEV; /* allow the device to be autosuspended */ mutex_lock(&原创 2010-07-06 14:18:00 · 624 阅读 · 0 评论 -
usb-skeleton.c 之 13---skel_write
static ssize_t skel_write(struct file *file, const char *user_buffer, size_t count, loff_t *ppos){ struct usb_skel *dev; int retval = 0; struct urb *urb = NULL; char *buf = NULL; size_t writesize = min(count, (size_t)MAX_TRANSFER原创 2010-07-06 15:08:00 · 847 阅读 · 0 评论 -
usb-skeleton.c 之 19--- struct usb_driver 结构体
<br />static struct usb_driver skel_driver = {<br /> .name = "skeleton",<br /> .probe = skel_probe,<br /> .disconnect = skel_disconnect,<br /> .suspend = skel_suspend,<br /> .resume = skel_resume,<br /> .pre原创 2010-07-06 16:21:00 · 962 阅读 · 0 评论 -
usb-skeleton.c 之 18--- 很多的 usb_driver 中的 函数
<br />static void skel_draw_down(struct usb_skel *dev)<br />{<br /> int time;<br /><br /> time = usb_wait_anchor_empty_timeout(&dev->submitted, 1000);<br /> if (!time)<br /> usb_kill_anchored_urbs(&dev->submitted);<br />}<br /><原创 2010-07-06 16:20:00 · 809 阅读 · 0 评论 -
usb-skeleton.c 之 16---skel_probbe 重头戏
static int skel_probe(struct usb_interface *interface, const struct usb_device_id *id){ struct usb_skel *dev; struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; size_t buffer_size; int i; int re原创 2010-07-06 15:56:00 · 922 阅读 · 0 评论 -
usb-skeleton.c 之 10---skel_flush
<br />static int skel_flush(struct file *file, fl_owner_t id)<br />{<br /> struct usb_skel *dev;<br /> int res;<br /><br /> dev = (struct usb_skel *)file->private_data;<br /> if (dev == NULL)<br /> return -ENODEV;<br /><br />原创 2010-07-06 14:44:00 · 675 阅读 · 0 评论 -
usb-skeleton.c 之 11---skel_read
<br />static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos)<br />{<br /> struct usb_satkel *dev;<br /> int retval;<br /> int bytes_read;<br /><br /> dev = (struct usb_skel *)file->prive_data; ** <br /原创 2010-07-06 14:53:00 · 1129 阅读 · 0 评论 -
usb-skeleton.c 之 12---skel_write_bulk_callback
static void skel_write_bulk_callback(struct urb *urb){ struct usb_skel *dev; dev = urb->context; /* sync/async unlink faults aren't errors */ if (urb->status) { if(!(urb->status == -ENOENT || urb->status == -ECON原创 2010-07-06 14:55:00 · 1083 阅读 · 0 评论 -
usb-skeleton.c 之00----起步usb骨架程序!!!
起步学习usb骨架程序!!!希望自己通过自己的努力可以完成使用的内核 2.6.30.4原创 2010-07-05 20:28:00 · 1120 阅读 · 0 评论 -
usb-skeleton.c 之 01--首先整体欣赏欣赏usb-skeleton.c 多的了得!!
/* * USB Skeleton driver - 2.2 * * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) * * 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 t原创 2010-07-05 20:31:00 · 1205 阅读 · 0 评论 -
usb-skeleton.c 之 14--- file_operations
<br /> <br />*******************************************************************<br />static const struct file_operations skel_fops = {<br /> .owner = THIS_MODULE,<br /> .read = skel_read, <br /> .write = skel_write, <br />原创 2010-07-06 15:37:00 · 792 阅读 · 0 评论 -
usb-skeleton.c 之 15--- usb_class_driver
<br />*************************************************************<br />/*<br /> * usb class driver info in order to get a minor number from the usb core,<br /> * and to have the device registered with the driver core<br /> */ **usb 类驱动 信息 使我们 能原创 2010-07-06 15:52:00 · 1806 阅读 · 0 评论 -
usb-skeleton.c 之 17--- skel_disconnect
<br />static void skel_disconnect(struct usb_interface *interface)<br />{<br /> struct usb_skel *dev;<br /> int minor = interface->minor;<br /><br /> dev = usb_get_intfdata(interface);<br /> usb_set_intfdata(interface, NULL);<br /><br原创 2010-07-06 16:17:00 · 838 阅读 · 0 评论 -
usb-skeleton.c 之 21-- 大结局
<br />大结局!!以后 看的 时候 加点点了原创 2010-07-06 16:23:00 · 555 阅读 · 0 评论