]> git.ipfire.org Git - thirdparty/man-pages.git/blob - man2/query_module.2
query_module.2: Note that this system call is present only in kernels before 2.6
[thirdparty/man-pages.git] / man2 / query_module.2
1 .\" Copyright (C) 1996 Free Software Foundation, Inc.
2 .\" This file is distributed according to the GNU General Public License.
3 .\" See the file COPYING in the top level source directory for details.
4 .\"
5 .\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
6 .\" reformatting and rewordings by mtk
7 .\"
8 .TH QUERY_MODULE 2 2012-10-09 "Linux" "Linux Programmer's Manual"
9 .SH NAME
10 query_module \- query the kernel for various bits pertaining to modules
11 .SH SYNOPSIS
12 .nf
13 .B #include <linux/module.h>
14 .sp
15 .BI "int query_module(const char *" name ", int " which ", void *" buf ,
16 .BI " size_t " bufsize ", size_t *" ret );
17 .fi
18 .SH DESCRIPTION
19 .BR Note :
20 This system call is present only in kernels before Linux 2.6.
21
22 .BR query_module ()
23 requests information from the kernel about loadable modules.
24 The returned information is placed in the buffer pointed to by
25 .IR buf .
26 The caller must specify the size of
27 .I buf
28 in
29 .IR bufsize .
30 The precise nature and format of the returned information
31 depend on the operation specified by
32 .IR which .
33 Some operations require
34 .I name
35 to identify a currently loaded module, some allow
36 .I name
37 to be NULL, indicating the kernel proper.
38
39 The following values can be specified for
40 .IR which :
41 .TP
42 .B 0
43 Returns success, if the kernel supports
44 .BR query_module ().
45 Used to probe for availability of the system call.
46 .TP
47 .B QM_MODULES
48 Returns the names of all loaded modules.
49 The returned buffer consists of a sequence of null-terminated strings;
50 .I ret
51 is set to the number of
52 modules.
53 .\" ret is set on ENOSPC
54 .TP
55 .B QM_DEPS
56 Returns the names of all modules used by the indicated module.
57 The returned buffer consists of a sequence of null-terminated strings;
58 .I ret
59 is set to the number of modules.
60 .\" ret is set on ENOSPC
61 .TP
62 .B QM_REFS
63 Returns the names of all modules using the indicated module.
64 This is the inverse of
65 .BR QM_DEPS .
66 The returned buffer consists of a sequence of null-terminated strings;
67 .I ret
68 is set to the number of modules.
69 .\" ret is set on ENOSPC
70 .TP
71 .B QM_SYMBOLS
72 Returns the symbols and values exported by the kernel or the indicated
73 module.
74 The returned buffer is an array of structures of the following form
75 .\" ret is set on ENOSPC
76 .in +4n
77 .nf
78
79 struct module_symbol {
80 unsigned long value;
81 unsigned long name;
82 };
83 .fi
84 .in
85 .IP
86 followed by null-terminated strings.
87 The value of
88 .I name
89 is the character offset of the string relative to the start of
90 .IR buf ;
91 .I ret
92 is set to the number of symbols.
93 .TP
94 .B QM_INFO
95 Returns miscellaneous information about the indicated module.
96 The output buffer format is:
97 .in +4n
98 .nf
99
100 struct module_info {
101 unsigned long address;
102 unsigned long size;
103 unsigned long flags;
104 };
105 .fi
106 .in
107 .IP
108 where
109 .I address
110 is the kernel address at which the module resides,
111 .I size
112 is the size of the module in bytes, and
113 .I flags
114 is a mask of
115 .BR MOD_RUNNING ,
116 .BR MOD_AUTOCLEAN ,
117 etc., that indicates the current status of the module
118 (see the Linux kernel source file
119 .IR include/linux/module.h ).
120 .I ret
121 is set to the size of the
122 .I module_info
123 structure.
124 .SH "RETURN VALUE"
125 On success, zero is returned.
126 On error, \-1 is returned and
127 .I errno
128 is set appropriately.
129 .SH ERRORS
130 .TP
131 .B EFAULT
132 At least one of
133 .IR name ,
134 .IR buf ,
135 or
136 .I ret
137 was outside the program's accessible address space.
138 .TP
139 .B EINVAL
140 Invalid
141 .IR which ;
142 or
143 .I name
144 is NULL (indicating "the kernel"),
145 but this is not permitted with the specified value of
146 .IR which .
147 .\" Not permitted with QM_DEPS, QM_REFS, or QM_INFO.
148 .TP
149 .B ENOENT
150 No module by that
151 .I name
152 exists.
153 .TP
154 .B ENOSPC
155 The buffer size provided was too small.
156 .I ret
157 is set to the minimum size needed.
158 .TP
159 .B ENOSYS
160 .BR query_module ()
161 is not supported in this version of the kernel.
162 .SH "CONFORMING TO"
163 .BR query_module ()
164 is Linux-specific.
165 .SH NOTES
166 This system call is only present on Linux up until kernel 2.4;
167 it was removed in Linux 2.6.
168 .\" Removed in Linux 2.5.48
169 Some of the information that was available via
170 .BR query_module ()
171 can be obtained from
172 .IR /proc/modules ,
173 .IR /proc/kallsyms ,
174 and the files under the directory
175 .IR /sys/module .
176 .SH "SEE ALSO"
177 .BR create_module (2),
178 .BR delete_module (2),
179 .BR get_kernel_syms (2),
180 .BR init_module (2),
181 .BR lsmod (8),
182 .BR modinfo (8)