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)