Geladene Module bzw. Treiber ermitteln



  • bool isLoaded(const string& module_name)
    {
        string temp = "";
        set<string> modules;
        ifstream input("/proc/modules");
    
        while( input >> temp ) 
        {
            modules.insert(temp);
            getline(temp);               // oder ignore
        }
    
        return modules.count(module_name);
     }
    


  • Danke, aber hier kommt leider für diese Zeile ein Fehler:

    getline(temp);
    
    error: cannot convert `std::string' to `char**' for argument `1' to `__ssize_t getline(char**, size_t*, FILE*)'
    


  • Tag,
    Wie wäre es mit c_str(); ?

    MFG ReduX



  • war auch meine erste Idee. Aber das gleiche in grün.

    getline(temp.c_str());
    
    error: cannot convert `const char*' to `char**' for argument `1' to `__ssize_t getline(char**, size_t*, FILE*)'
    


  • Uups, sollte natürlich getline(input, temp) sein.



  • Threadersteller schrieb:

    Geladene Module bzw. Treiber ermitteln

    Was ist mit den Treibern die fest eingebunden sind im Kernel.



  • Kuhjunge schrieb:

    Was ist mit den Treibern die fest eingebunden sind im Kernel.

    cat /usr/src/linux/.config | grep =m
    


  • cat /usr/src/linux/.config | grep =m

    das geht aber nur wenn die quellen installiert sind und der link auch auf die richtigen quellen zeigt.
    außerdem, wenn der kernel kompiliert ist und läuft, heißt das ja nicht das die .config nicht verändert worden ist.
    das ist also nicht die zuverlässige methode.



  • k1w2t5 schrieb:

    das geht aber nur wenn die quellen installiert sind und der link auch auf die richtigen quellen zeigt.
    außerdem, wenn der kernel kompiliert ist und läuft, heißt das ja nicht das die .config nicht verändert worden ist.
    das ist also nicht die zuverlässige methode.

    Stimmt. Was ist damit:

    cat /usr/src/linux/drivers/modules.order
    


  • das läuft auf das selbe hinaus, kernelquellen.
    also für die module gibt es ja /lib/modules/ $kernelversion. die kernelversion bekommt man ja mit uname.
    für die fest eingebundenen treiber müsste man doch was mit /sys/ oder /proc/ anfangen können. leider weiß ich nicht genau wie. wenn es im kernel konfiguriert ist, kann man auch deren config auslesen aus /proc/config.
    es muss doch sowas geben wie unter windows das verzeichnis /system32/
    wahrscheinlich ist das ganz einfach, wenn man weiß wie.


Anmelden zum Antworten