Linux USB驱动程序:insmod

时间:2016-10-30 22:38:05

标签: c linux usb driver

我目前正在学习如何为Linux创建USB驱动程序,到目前为止我非常喜欢它!但是,我在尝试插入我的.ko文件时遇到了一个问题。我一直收到以下错误:“模块中的未知符号”。

下面,您将找到我的代码。有点奇怪的是,如果我在__init函数中注释掉代码,模块加载得很好,但是在完成我的代码之后,将它与其他USB驱动程序代码进行比较,我无法找到任何问题。你能帮帮我吗?非常感谢你的帮助

struct xb1_controller {
    struct usb_device *udev;
    struct usb_interface *interface;
    unsigned char minor;

    char *int_in_buffer;
    struct usb_endpoint_descriptor *endpoint;
    struct urb *int_in_urb;
};

static struct usb_device_id xb1_table [] = {
    {USB_DEVICE(xb1_vendor_id, xb1_product_id) },
    {}
};

MODULE_DEVICE_TABLE(usb, xb1_table);

static int xb1_open(struct inode *inode, struct file *file) {
    //Sys call
}

static int xb1_release(struct inode *inode, struct file *file) {
    //Sys call
}

static ssize_t xb1_read(struct file *file, const char __user *user_buf,    
size_t count, loff_t *ppos) {
    //Sys call
}

static struct file_operations xb1_fops = {
    .owner = THIS_MODULE,
    .open = xb1_open,
    .release = xb1_release,
    .read = xb1_read,
};

static struct usb_class_driver xb1_class = {
    .name = "xb1driver",
    .fops = &xb1_fops,
    .minor_base = MINOR_BASE,
};

static int xb1_probe(struct usb_interface *interface, const struct  
usb_device_id *id) {
    printk(KERN_INFO "xb1driver probe function called");
}

static void xb1_disconnect(struct usb_interface *interface) {
    printk(KERN_INFO "xb1driver disconnect function called");
}

static struct usb_driver xb1_driver = {
    .name = "xb1driver",
    .id_table = xb1_table,
    .probe = xb1_probe,
    .disconnect = xb1_disconnect,
};

static int __init xb1_init(void) {
    int result;

    result = usb_register(&xb1_driver);

    if(result) {
        printk(KERN_INFO "usb_register has failed..");
        return 5;
    }

    return result;
}

static void __exit xb1_exit(void) {
    usb_deregister(&xb1_driver);
}

module_init(xb1_init);
module_exit(xb1_exit);

0 个答案:

没有答案