query_module — query the kernel for various bits pertaining to modules
#include <linux/module.h>
int
query_module( |
const char * | name, |
int | which, | |
void * | buf, | |
size_t | bufsize, | |
size_t * | ret) ; |
query_module
() requests
information from the kernel about loadable modules. The
returned information is placed in the buffer pointed to by
buf
. The caller must
specify the size of buf
in bufsize
. The precise nature and
format of the returned information depend on the operation
specified by which
.
Some operations require name
to identify a currently
loaded module, some allow name
to be NULL, indicating the
kernel proper.
The following values can be specified for which
:
0
Returns success, if the kernel supports query_module
(). Used to probe for
availability of the system call.
QM_MODULES
Returns the names of all loaded modules. The
returned buffer consists of a sequence of
null-terminated strings; ret
is set to the number
of modules.
QM_DEPS
Returns the names of all modules used by the
indicated module. The returned buffer consists of a
sequence of null-terminated strings; ret
is set to the number
of modules.
QM_REFS
Returns the names of all modules using the indicated
module. This is the inverse of QM_DEPS
. The returned buffer consists
of a sequence of null-terminated strings; ret
is set to the number
of modules.
QM_SYMBOLS
Returns the symbols and values exported by the kernel or the indicated module. The returned buffer is an array of structures of the following form
struct module_symbol { unsigned long value
;unsigned long name
;}; followed by null-terminated strings. The value of
name
is the character offset of the string relative to the start ofbuf
;ret
is set to the number of symbols.
QM_INFO
Returns miscellaneous information about the indicated module. The output buffer format is:
struct module_info { unsigned long address
;unsigned long size
;unsigned long flags
;}; where
address
is the kernel address at which the module resides,size
is the size of the module in bytes, andflags
is a mask ofMOD_RUNNING
,MOD_AUTOCLEAN
, etc. that indicates the current status of the module (see the kernel source fileinclude/linux/module.h
).ret
is set to the size of themodule_info
structure.
At least one of name
, buf
, or ret
was outside the
program's accessible address space.
Invalid which
; or name
is NULL (indicating
"the kernel"), but this is not permitted with the
specified value of which
.
No module by that name
exists.
The buffer size provided was too small. ret
is set to the minimum
size needed.
query_module
() is not
supported in this version of the kernel.
This system call is only present on Linux up until kernel
2.4; it was removed in Linux 2.6. Some of the information
that was available via query_module
() can be obtained from
/proc/modules
, /proc/kallsyms
, and /sys/modules
.
create_module(2), delete_module(2), get_kernel_syms(2), init_module(2)
|