USB-Gerätetreibermodul wird beim Ausführen von insmod beendet?


0

Während der Ausführung makewerden keine Warnungen oder Fehler angezeigt. Wenn ich jedoch das grundlegende USB-Gerätetreibermodul in den ausgeführten Kernel einbaue, wird die Meldung "Abgebrochen" angezeigt.

Hier ist mein Code:

#include<linux/init.h>
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/usb.h>

MODULE_LICENSE("GPL");

#ifndef DEBUG
#define DEBUG
#endif

static struct usb_driver skel_driver = {

};

static void __exit usb_deregister_func(void)
{
    #ifdef DEBUG
        printk(KERN_INFO "Begin : %s",__func__);
        #endif

    usb_deregister(&skel_driver);

    #ifdef DEBUG
        printk(KERN_INFO "End : %s",__func__);
        #endif  
}

static int __init usb_register_func(void)
{
    int ret_val;

    ret_val = 0;    

    #ifdef DEBUG
    printk(KERN_INFO "Begin : %s",__func__);
    #endif

    ret_val = usb_register(&skel_driver);
    if(ret_val)
    {
        #ifdef DEBUG
        printk(KERN_ERR "ERROR : usb_register().");
        #endif

        return -1;
    }

    #ifdef DEBUG
    printk(KERN_INFO "End : %s",__func__);
    #endif

    return 0;
}
module_exit(usb_deregister_func);
module_init(usb_register_func);

Haben Sie überprüfen dmesg, /var/log/syslog, var/log/messagesfür alle Informationen?
Jcoppens

Ja, ich habe die Datei var / log / messages überprüft, die besagt, dass sie die NULL-Zeiger-Dereferenzierung nicht verarbeiten kann.
user3604591

Antworten:


0

Gemäß der Dokumentation "Schreiben eines USB-Treibers" müssen Sie mindestens 5 Parameter in der Struktur usb_driver definieren :

static struct usb_driver skel_driver = {
    .owner = THIS_MODULE,
    .name = "skeleton",
    .id_table = skel_table,
    .probe = skel_probe,
    .disconnect = skel_disconnect,
};

Die Registrierungsaktion versucht wahrscheinlich, eines dieser Felder zu lesen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.