Was ist der Unterschied zwischen module_init und init_module in einem Linux Kernel Modul?

8

Ich habe versucht, einige Linux-Treiber zu portieren und erkannte, dass es einen wesentlichen Unterschied zwischen Kernel-Version 2.4 und 2.6 von Linux gibt.

In der Version 2.4 des Kernels war die Modulprogrammierung wie folgt -

%Vor%

Aber mit der Version 2.6 des Kernels muss das folgende für Module getan werden -

%Vor%

Was ist der Vorteil solcher Änderungen in Kernel 2.6 und warum war diese Änderung in Kernel 2.6 von Linux erforderlich?

    
Karthik Balaguru 10.07.2010, 07:39
quelle

3 Antworten

6

Wenn Sie sich die Definition der neuen Funktionen ansehen:

%Vor%

Sie werden feststellen, dass das richtige Boilerplate enthalten ist, damit diese speziellen Funktionen vom Compiler korrekt behandelt werden können. Es ist, was die interne API von Linux tut, es entwickelt sich, wenn es bessere Möglichkeiten gibt, das Problem zu lösen.

    
stsquad 10.07.2010, 14:25
quelle
5
  

Was ist der Vorteil von [module_init] in Kernel 2.6?

module_init wurde in 2.4 ebenfalls verlassen, wohlgemerkt.

Es fügt den notwendigen Textbaustein hinzu, um das Modul zu initialisieren und die Eingabefunktion auszuführen, wenn die Moduldatei in den Kernel und nicht als Modul kompiliert wird.

    
user502515 21.11.2010 14:41
quelle
1

Ein Vorteil ist die Lesbarkeit. cdrom_init () sagt dir sofort, dass es der init () - Aufruf für den CD-ROM-Treiber ist.

    
Bandan 11.07.2010 14:02
quelle