GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre module_init et init_module dans un module du noyau Linux ?

Si vous regardez la définition des nouvelles fonctions :

/* Each module must use one module_init(). */
#define module_init(initfn)                 \
static inline initcall_t __inittest(void)       \
{ return initfn; }                  \
int init_module(void) __attribute__((alias(#initfn)));

/* This is only required if you want to be unloadable. */
#define module_exit(exitfn)                 \
static inline exitcall_t __exittest(void)       \
{ return exitfn; }                  \
void cleanup_module(void) __attribute__((alias(#exitfn)));

Vous verrez qu'il garantit que le bon passe-partout est inclus afin que ces fonctions spéciales puissent être correctement traitées par le compilateur. C'est ce que fait l'API interne de Linux, elle évolue s'il existe de meilleures façons de résoudre le problème.


Quel est l'avantage de [module_init] dans le noyau 2.6

module_init également quitté en 2.4, attention.

Il ajoute le passe-partout nécessaire pour initialiser le module et exécuter la fonction d'entrée lorsque le fichier du module est compilé dans le noyau plutôt qu'en tant que module.


Linux
  1. Quelle est la différence entre un conteneur Linux et une image ?

  2. Quelle est la différence entre la commande locate et find sous Linux

  3. Quelle est la différence entre la mémoire tampon et la mémoire cache sous Linux ?

  4. Quelle est la différence entre un appel Library et un appel System sous Linux ?

  5. Quelle est la différence entre les pilotes du noyau et les modules du noyau ?

Quelle est la différence entre les noyaux macOS et Linux

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre Rsync et BTRFS sous Linux ?

Quelle est la différence entre le noyau préemptif non préemptif, préemptif et préemptif sélectif ?

Quelle est la différence entre les appels probables et improbables dans le noyau ?

Quelle est la différence entre partx et kpartx ?