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