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%uA0buf. The caller must specify the size of%uA0buf%uA0in%uA0bufsize. The precise nature and format of the returned information depend on the operation specified by%uA0which. Some operations require%uA0name%uA0to identify a currently loaded module, some allow%uA0name%uA0to be NULL, indicating the kernel proper.
The following values can be specified for%uA0which:
标签
描述
0
Always returns success. Used to probe for availability of the system call.
QM_MODULES
%uA0
Returns the names of all loaded modules. The returned buffer consists of a sequence of null-terminated strings%uA0ret%uA0is set to the number of modules.
QM_DEPS
%uA0
Returns the names of all modules used by the indicated module. The returned buffer consists of a sequence of null-terminated strings%uA0ret%uA0is set to the number of modules.
QM_REFS
%uA0
Returns the names of all modules using the indicated module. This is the inverse of%uA0QM_DEPS. The returned buffer consists of a sequence of null-terminated strings%uA0ret%uA0is set to the number of modules.
QM_SYMBOLS
%uA0
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%uA0name%uA0is the character offset of the string relative to the start of%uA0buf%uA0ret%uA0is set to the number of symbols.
QM_INFO
%uA0
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%uA0address%uA0is the kernel address at which the module resides,%uA0size%uA0is the size of the module in bytes, and%uA0flags%uA0is a mask of%uA0MOD_RUNNING,%uA0MOD_AUTOCLEAN, etc. that indicates the current status of the module (see the kernel source file%uA0include/linux/module.h).%uA0ret%uA0is set to the size of themodule_info%uA0structure.
返回值
On success, zero is returned. On error, -1 is returned and%uA0errno%uA0is set appropriately.
错误
标签
描述
EFAULT
At least one of%uA0name,%uA0buf, or%uA0ret%uA0was outside the program’s accessible address space.
EINVAL
Invalid%uA0which or%uA0name%uA0is NULL (indicating "the kernel"), but this is not permitted with the specified value of%uA0which.
ENOENT
No module by that%uA0name%uA0exists.
ENOSPC
The buffer size provided was too small.%uA0ret%uA0is set to the minimum size needed.
遵循于
query_module() is Linux specific.
注意
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%uA0query_module() can be obtained from/proc/modules,%uA0/proc/kallsyms, and%uA0/sys/modules.