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 of
buf
; 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, and flags
is a mask of
MOD_RUNNING
, MOD_AUTOCLEAN
, etc. that indicates
the current status of the module (see the kernel source
file include/linux/module.h
). ret
is set to the size of
the module_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
.