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: src/share/man/man9/DECLARE_MODULE.9,v 1.2.2.3 2001/12/17 11:30:18 ru Exp $
30: .\" $DragonFly: src/share/man/man9/DECLARE_MODULE.9,v 1.2 2003/06/17 04:37:01 dillon Exp $
31: .\"
32: .Dd March 3, 2001
33: .Dt DECLARE_MODULE 9
34: .Os
35: .Sh NAME
36: .Nm DECLARE_MODULE
37: .Nd kernel module declaration macro
38: .Sh SYNOPSIS
39: .In sys/module.h
40: .Fn DECLARE_MODULE "name" "moduledata_t data" "sub" "order"
41: .Sh DESCRIPTION
42: The
43: .Fn DECLARE_MODULE
44: macro declares a generic kernel module.
45: It is used to register the module with the system, using the
46: .Fn SYSINIT
47: macro.
48: .Fn DECLARE_MODULE
49: is usually used within other macros, such as
50: .Xr DRIVER_MODULE 9 ,
51: .Xr DEV_MODULE 9
52: and
53: .Xr SYSCALL_MODULE 9 .
54: However, it can be called directly of course, for example in
55: order to implement dynamic sysctls.
56: .Pp
57: The arguments to
58: .Fn DECLARE_MODULE :
59: .Pp
60: .Fa name
61: is the name of the module, which will be used in the
62: .Fn SYSINIT
63: call to identify the module.
64: .Pp
65: .Fa data
66: is a pointer to the
67: .Vt moduledata_t
68: structure, which contains two main items, the official name of the
69: module name, which will be used in the
70: .Vt module_t
71: structure and a pointer to the event handler function of type
72: .Vt modeventhand_t .
73: .Pp
74: .Fa sub
75: is an argument directed to the
76: .Fn SYSINIT
77: macro.
78: Valid values for this are contained in the
79: .Vt sysstem_sub_id
80: enumeration
81: (see
82: .Pa kernel.h )
83: and specify the type of system startup interfaces.
84: The
85: .Xr DRIVER_MODULE 9
86: macro uses a value of
87: .Dv SI_SUB_DRIVERS
88: here for example, since these modules contain a driver for a device.
89: For kernel modules that are loaded at runtime, a value of
90: .Dv SI_SUB_EXEC
91: is common.
92: .Pp
93: The
94: .Fa order
95: value is another argument for
96: .Fn SYSINIT .
97: It represents the KLDs order of initialization within the subsystem.
98: Valid values are defined in the
99: .Vt sysinit_elem_order
100: enumeration
101: .Pa ( kernel.h ) .
102: .Sh SEE ALSO
103: .Xr DEV_MODULE 9 ,
104: .Xr DRIVER_MODULE 9 ,
105: .Xr module 9 ,
106: .Xr SYSCALL_MODULE 9
107: .Pp
108: .Pa /usr/include/sys/kernel.h ,
109: .Pa /usr/share/examples/kld
110: .Sh AUTHORS
111: .An -nosplit
112: This manual page was written by
113: .An Alexander Langer Aq alex@FreeBSD.org ,
114: inspired by the KLD Facility Programming Tutorial by
115: .An Andrew Reiter Aq arr@watson.org .