NAME
modload — load kernel modules on demand
SYNOPSIS
#include <sys/mod.h>
int modload(char *pathname);
DESCRIPTION
modload
allows processes with appropriate privilege to demand-load a kernel module
into the running kernel.
The module must be of a supported type and must have been registered via
kcmodule(1M)
before it can be loaded.
The module to be loaded is specified by
pathname.
pathname
may be either a module name or an absolute path name.
If
pathname
is a module name, a list of directories specified by modpath is searched
for a match.
If
pathname
is absolute, only
pathname
is used to access the object file.
The file must be an ELF64 relocatable object file.
Notes
modload
is currently implemented as a macro.
Security Restrictions
modload
is restricted to superuser processes and privileged processes.
A privileged process requires the
PRIV_DLKM
privilege to execute the
modload
system call.
See
privileges(5),
for more information about the
DLKM_PRIV
privilege.
RETURN VALUE
On successful completion,
modload
returns a module identifier that can be passed to
moduload
or
modstat.
On failure it returns -1 and sets
errno
to identify the error.
ERRORS
modload
fails if one or more of the following are true:
- EACCES
A component of
pathname
denies search permission.
- ENOENT
The file named by
pathname
does not exist.
- ENOREG
The module being loaded is not currently registered.
- EINVAL
The file named by
pathname
is not appropriately pre-configured or has invalid dependency on other modules.
- EPERM
The caller is not a superuser process or a privileged process.
- ERELOC
A relocation error occurred during the attempt to load the module,
or the module references symbols not defined in the running kernel,
or the module references symbols in another loadable module
but it did not declare its dependence on this module in its
module metadata.
- ENAMETOOLONG
pathname
is more than
MAXPATHLEN
characters long.
- EBADVER
The module wrapper has an incorrect version number.
- ENOSYS
The Dynamically Loadable Kernel Module feature is not initialized.