********************代码********************************
static void skel_delete(struct kref *kref)
{
struct usb_skel *dev = to_skel_dev(kref);
**container_of(kref,,) 具体 的结构体成员 域 的地址
**返回usb_skel 类型
usb_put_dev(dev->udev);
kfree(dev->bulk_in_buffer);动态申请的 内存
释放批量输入端口缓冲
kfree(dev); 释放设备
}
********************************************************
struct kref 定义在 linux/include/linux/kref.h 、
struct kref={
atomic_t refcount;
} 其中 atomic_t 定于如下 linux/types.h
tepydef struct ={
volatile int counter;
} atomic_t;
*********************************************************
usb_put_dev(dev->udev);
*********************************************************
usb_put_dev() 定义 struct usb_put_dev(struct usb_dev *dev)
{
if(dev)
put_device(&dev->dev);
}
EXPORT_SYMBOL_GPL(usb_put_dev);
好像 迷糊了。