1.\" -*- nroff -*- 2.\" 3.\" Copyright (c) 2000 Alexander Langer 4.\" 5.\" All rights reserved. 6.\" 7.\" This program is free software. 8.\" 9.\" Redistribution and use in source and binary forms, with or without 10.\" modification, are permitted provided that the following conditions 11.\" are met: 12.\" 1. Redistributions of source code must retain the above copyright 13.\" notice, this list of conditions and the following disclaimer. 14.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" notice, this list of conditions and the following disclaimer in the 16.\" documentation and/or other materials provided with the distribution. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR 19.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, 22.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28.\" 29.\" $FreeBSD$ 30.\" 31.Dd March 3, 2001 32.Dt DECLARE_MODULE 9 33.Os 34.Sh NAME 35.Nm DECLARE_MODULE 36.Nd kernel module declaration macro 37.Sh SYNOPSIS 38.In sys/param.h 39.In sys/kernel.h 40.In sys/module.h 41.Fn DECLARE_MODULE "name" "moduledata_t data" "sub" "order" 42.Sh DESCRIPTION 43The 44.Fn DECLARE_MODULE 45macro declares a generic kernel module. 46It is used to register the module with the system, using the 47.Fn SYSINIT 48macro. 49.Fn DECLARE_MODULE 50is usually used within other macros, such as 51.Xr DRIVER_MODULE 9 , 52.Xr DEV_MODULE 9 53and 54.Xr SYSCALL_MODULE 9 . 55However, it can be called directly of course, for example in 56order to implement dynamic sysctls. 57.Pp 58The arguments to 59.Fn DECLARE_MODULE : 60.Pp 61.Fa name 62is the name of the module, which will be used in the 63.Fn SYSINIT 64call to identify the module. 65.Pp 66.Fa data 67is a 68.Vt moduledata_t 69structure, which contains two main items, the official name of the 70module name, which will be used in the 71.Vt module_t 72structure and a pointer to the event handler function of type 73.Vt modeventhand_t . 74.Pp 75.Fa sub 76is an argument directed to the 77.Fn SYSINIT 78macro. 79Valid values for this are contained in the 80.Vt sysinit_sub_id 81enumeration 82(see 83.In sys/kernel.h ) 84and specify the type of system startup interfaces. 85The 86.Xr DRIVER_MODULE 9 87macro uses a value of 88.Dv SI_SUB_DRIVERS 89here for example, since these modules contain a driver for a device. 90For kernel modules that are loaded at runtime, a value of 91.Dv SI_SUB_EXEC 92is common. 93.Pp 94The 95.Fa order 96value is another argument for 97.Fn SYSINIT . 98It represents the KLDs order of initialization within the subsystem. 99Valid values are defined in the 100.Vt sysinit_elem_order 101enumeration 102.Pq In sys/kernel.h . 103.Sh SEE ALSO 104.Xr DEV_MODULE 9 , 105.Xr DRIVER_MODULE 9 , 106.Xr module 9 , 107.Xr SYSCALL_MODULE 9 108.Pp 109.Pa /usr/include/sys/kernel.h , 110.Pa /usr/share/examples/kld 111.Sh AUTHORS 112.An -nosplit 113This manual page was written by 114.An Alexander Langer Aq alex@FreeBSD.org , 115inspired by the KLD Facility Programming Tutorial by 116.An Andrew Reiter Aq arr@watson.org . 117