DECLARE_MODULE(9)

DECLARE_MODULE9

Kernel module declaration macro

Usage

#include <sys/param.h>

#include <sys/kernel.h>

#include <sys/module.h>

DECLARE_MODULE(name, moduledata_t data, sub, order);

Overview

The DECLARE_MODULE() macro declares a generic kernel module. It is used to register the module with the system, using the SYSINIT() macro. DECLARE_MODULE() is usually used within other macros, such as DRIVER_MODULE(9), DEV_MODULE(9) and SYSCALL_MODULE(9). Of course, it can also be called directly, for example in order to implement dynamic sysctls.

The arguments it expects are:

name

The module name, which will be used in the SYSINIT() call to identify the module.

data

A moduledata_t structure, which contains two main items, the official name of the module name, which will be used in the module_t structure and a pointer to the event handler function of type modeventhand_t.

sub

An argument directed to the SYSINIT() macro. Valid values for this are contained in the sysinit_sub_id enumeration (see ⟨sys/kernel.h⟩) and specify the type of system startup interfaces. The DRIVER_MODULE(9) macro uses a value of SI_SUB_DRIVERS here for example, since these modules contain a driver for a device. For kernel modules that are loaded at runtime, a value of SI_SUB_EXEC is common.

order

An argument for SYSINIT(). It represents the KLDs order of initialization within the subsystem. Valid values are defined in the sysinit_elem_order enumeration (In sys/kernel.h).

Authors

This manual page was written by Alexander Langer ⟨[email protected]⟩, inspired by the KLD Facility Programming Tutorial by Andrew Reiter ⟨[email protected]⟩.

From freebsd-manpages 6.0-5 in Debian 4.0 (Etch). Parsed by carta from the page's mdoc source.