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
config(1M)
or
kmmodreg(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 pathname. 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.
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]
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 calling process does not have appropriate privilege.
- [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
master(4)
file.
- [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.