| MODCTL(2) | System Calls Manual | MODCTL(2) | 
modctl —
#include <sys/module.h>
int
  
  modctl(int
    operation, void
    *argp);
modctl() provides control over loaded kernel modules.
  The argument operation is one of
  MODCTL_LOAD, MODCTL_UNLOAD,
  MODCTL_STAT, or MODCTL_EXISTS.
  The argument argp depends on the
  operation to be performed.
Operations are:
MODCTL_LOADMODCTL_UNLOADMODCTL_STATIf the block is not large enough, the data returned will be truncated to fit. The kernel will then update the iov_len member of the iovec to reflect the size of the complete report, regardless of whether this is larger or smaller than the size passed in.
MODCTL_EXISTSMODCTL_LOAD, or it should be “1” to
      test if the system can autoload modules. Note that this test does not
      consider the sysctl kern.module.autoload.MODCTL_LOAD contains the following elements, which
  should be filled in by the caller:
MODCTL_NO_PROPMODCTL_LOAD_FORCENULL in which case
      ml_propslen must be 0. An
      upper limit of 4096 bytes is imposed on the value of ml_propslen.
      Attempting to load a proplib dictionary larger than this size will return
      ENOMEM.The modstat_t structure used with
    MODCTL_STAT contains the following elements, which
    are filled in by the kernel:
MODULE_SOURCE_KERNELMODULE_SOURCE_BOOTMODULE_SOURCE_FILESYSMODULE_CLASS_SECMODELMODULE_CLASS_VFSMODULE_CLASS_DRIVERMODULE_CLASS_EXECMODULE_CLASS_MISCMODFLAG_MUST_FORCEMODFLAG_AUTO_LOADEDOtherwise, a value of -1 is returned and errno is set to indicate the error.
modctl() will fail if:
EBUSY]MODCTL_UNLOAD and the module is in use or the
      module is compiled into the kernel.EDEADLK]MODCTL_LOAD and there is a circular dependency in
      the module's dependency chain.EEXIST]MODCTL_LOAD and the module is already loaded.EFAULT]EFBIG]MODCTL_LOAD, the specified module resides in the
      file system, and the module's default proplib file was too large.EINVAL]The argument operation is
        MODCTL_LOAD and ml_props is not
        NULL and “ml_propslen” is
        0, or ml_props is NULL
        and “ml_propslen” is not 0. The
        kernel is unable to internalize the plist. Or, there is a problem with
        the module or <module>.plist.
EMLINK]MODCTL_LOAD and the module has too many
      dependencies.ENAMETOOLONG]ENOENT]MODCTL_LOAD and the module or a dependency can't
      be found.
    The argument operation is
        MODCTL_UNLOAD and no module by the name of
        argp is loaded.
ENOEXEC]MODCTL_LOAD and the module is not a valid object
      for the system. Most likely, one or more undefined symbols could not be
      resolved by the in-kernel linker.ENOMEM]EPERM]EPROGMISMATCH]MODCTL_LOAD, the ml_flags
      field in the modctl_load_t structure does not include
      MODCTL_LOAD_FORCE, and the requested module does
      not match the current kernel's version information.modctl() function call first appeared in
  NetBSD 5.0.
| December 4, 2019 | NetBSD 9.3 |