This chapter introduced the following kernel symbols.
/etc/modules.conf
This is the configuration file for modprobe and depmod. It is used to configure demand loading and is described in the manpages for the two programs.
#include <linux/kmod.h>
,
int request_module(const char *name);
void inter_module_register(const char *string, struct module *module, const void *data);
,
void inter_module_unregister(const char *);
inter_module_register makes data available to other modules via the inter-module communication system. When the data is no longer to be shared, inter_module_unregister will end that availability.
const void *inter_module_get(const char *string);
,
const void *inter_module_get_request(const char *string, const char *module);
,
void inter_module_put(const char *string);
The first two functions look up a string in the intermodule
communication system; inter_module_get_request
also attempts to load the given module
if the
string is not found. Both increment the usage count of the module
that exported the string; inter_module_put should
be called to decrement it when the data pointer is no longer needed.
#include <linux/config.h>
,
CONFIG_MODVERSIONS
This macro is defined only if the current kernel has been compiled to support versioned symbols.
#ifdef MODVERSIONS
,
#include <linux/modversions.h>
This header, which exists only if
CONFIG_MODVERSIONS
is valid, contains the versioned
names for all the symbols exported by the kernel.
__GENKSYMS__
This macro is defined by make when
preprocessing files to be read by genksyms
to build new version codes. It is used to conditionally prevent
inclusion of <linux/modversions.h>
when
building new checksums.
int call_usermodehelper(char *path, char *argv[], char *envp[]);
This function runs a user-mode program in the keventd process context.