ckernel-modulesystem-calls

Programmatically check whether a linux kernel module exists or not at runtime


I am writing a C daemon, which depends on the existence of two kernel modules in order to do its job. The program does not directly use these (or any other) modules. It only needs them to exist. Therefore, I would like to programmatically check whether these modules are already loaded or not, in order to warn the user at runtime.

Before I start to do things like parsing /proc/modules or lsmod output, does a utility function already exist somewhere? Something like is_module_loaded(const char* name);

I am pretty sure this has been asked before. However, I think I am missing the correct terms to search for this.


Solution

  • You can use popen and lsmod | grep trick:

      FILE *fd = popen("lsmod | grep module_name", "r");
    
      char buf[16];
      if (fread (buf, 1, sizeof (buf), fd) > 0) // if there is some result the module must be loaded
        printf ("module is loaded\n");
      else
        printf ("module is not loaded\n");