MOD_INSTALL(9F) Kernel Functions for Drivers MOD_INSTALL(9F)
NAME
mod_install, mod_remove, mod_info, mod_modname - add, remove or query
a loadable module
SYNOPSIS
#include <sys/modctl.h>
int mod_install(
struct modlinkage *modlinkage);
int mod_remove(
struct modlinkage *modlinkage);
int mod_info(
struct modlinkage *modlinkage,
struct modinfo *modinfo);
const char *mod_modname(
struct modlinkage *modlinkage);
INTERFACE LEVEL
illumos DDI specific (illumos DDI).
PARAMETERS
modlinkage Pointer to the loadable module's
modlinkage structure
which describes what type(s) of module elements are
included in this loadable module.
modinfo Pointer to the
modinfo structure passed to
_info(9E).
DESCRIPTION
mod_install() must be called from a module's
_init(9E) routine.
mod_remove() must be called from a module's
_fini(9E) routine.
mod_info() must be called from a module's
_info(9E) routine.
mod_modname() can be called from any module routine.
When
_init(9E) is executing, its call to
mod_install() enables other
threads to call
attach(9E) even prior to
mod_install() returning and
_init(9E) completion. From a programming standpoint this means that
all
_init(9E) initialization must occur prior to
_init(9E) calling
mod_install(). If
mod_install() fails (non-zero return value), any
initialization must be undone.
When
_fini(9E) is executing, another thread may call
attach(9E) prior
to
_fini(9E) calling
mod_remove(). If this occurs, the
mod_remove() fails (non-zero return). From a programming standpoint, this means
that
_init(9E) initializations should only be undone after a
successful return from
mod_remove().
To query the name of a module, use
mod_modname(). If the module is a
driver, the module name is the same as the driver name. This function
can be used to avoid compiled-in knowledge of the module name, and is
of particular use when
_init(9E) needs to call a function like
kstat_create(9F).
RETURN VALUES
mod_install() and
mod_remove() return
0 upon success and non-zero on
failure.
mod_info() returns a non-zero value on success and
0 upon failure.
mod_modname() returns the name of the module. The returned name
remains valid as long as the module remains loaded.
EXAMPLES
See
_init(9E) for an example that uses these functions.
SEE ALSO
_fini(9E),
_info(9E),
_init(9E),
kstat_create(9F),
modldrv(9S),
modlinkage(9S),
modlstrmod(9S) Writing Device Drivers July 8, 2008 MOD_INSTALL(9F)