总览

#include <linux/module.h>

int query_module(const char *name, int which,void *buf, size_t bufsize, size _t *ret);

描述

query_module请求和可加载模块有关的来自内核的信息.信息的细致的特性和格式依赖于 which参数,一些函数要求name参数来命名当前被加载的模块.一些允许参数name为null, 指明内核是正确的.: which的值 0 Always returns success. Used to probe for the system call. 0 总是返回成功,用来探测系统调用. /* 参见 insmod -p 和前面文章 */ QM_MODULES Returns the names of all loaded modules. The output buffer
format is adjacent null-terminated strings; ret is set to the number of mod
ules.
返回所有已加载的模块的名字.输出缓冲区的格式是邻近的以null终止的字符串;ret 被设置为模块的数目. QM_DEPS
Returns the names of all modules used by the indicated module o the number of
modules. 返回所有被name参数指定的模块使用的模块的名字.输出缓冲区格式是邻近的以null终止的字符串;ret被设置为模块的数目. QM_REFS
Returns the names of all modules using the indicated module. This is the inverse
of QM_DEPS. The output buffer format is adjacent null-te rminated strings; ret
is set to the number of modules.

返回所有正使用被name参数指定的模块的模块名字.这和QM_DEPS是相反的.输出缓冲区格式是以邻近的null终止的字符串;ret被设置为模块的数目.
QM_SYMBOLS Returns the symbols and values exported by the kernel or t he
indicated module. The buffer format is an array of:

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 t he
number of symbols.

返回被内核或指定模块导出(开放)的符号和值对.缓冲区格式是一个以null终止的结构数组,name的值是相对缓冲区的开始的字符串的字符偏移;ret被设置为符号的数目.

struct module_symbol
{
unsigned long value;

unsigned long value;
} QM_INFO Returns miscelaneous
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 reside
s, size is the size of the module in bytes, and flags is a mask of MOD_RUNNI NG,
MOD_AUTOCLEAN, et al that indicates the current status of the module. re t is
set to the size of the module_info struct.
返回各种和指定模块相关的各种信息,输出缓冲区的格式如下:

struct module_info
{
unsigned long address;

unsigned long size;
unsigned long flags;
}

address是模块在内核空间中驻留的地址,size是模块以字节计数的大小,flags是MOD_R
UNING,MOD_AUTOCLEAN等指示模块当前状态的标志的按位或组成的掩玛.ret被设置为mod ule_info结构的大小.

返回值

成功时总是返回0,错误是返回-1,全局变量errno被相应设置.

错误

ENOENT
被name指定的模块不存在.
EINVAL
ENOSPC
提供的缓冲区太小,ret被设置为需要的最小大小.
EFAULT
name,buf或ret中至少一个越出了程序可访问的地址空间.        

query_module - 向内核查询和模块有关的各个位的更多相关文章

  1. 解析 Linux 内核可装载模块的版本检查机制

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...

  2. 跟我一起读postgresql源码(八)——Executor(查询执行模块之——可优化语句的执行)

    2.可优化语句的执行 可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理.该模块对外提供了三个接口: ExecutorStart.Executo ...

  3. 跟我一起读postgresql源码(二)——Parser(查询分析模块)

    上篇博客简要的介绍了下psql命令行客户端的前台代码.这一次,我们来看看后台的代码吧. 十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的.即:后台接到前台 ...

  4. linux实践——内核编程 基础模块

    一.内核模块的概念 Linux模块(module)是一些可以作为独立程序来编译的函数和数据类型的集合.内核模块给我们带来的便利是模块本身并不被编译进内核文件,可在内核运行期间动态的安装或卸载.因为如果 ...

  5. 跟我一起读postgresql源码(六)——Executor(查询执行模块之——查询执行策略)

    时光荏苒,岁月如梭.楼主已经很久没有更新了.之前说好的一周一更的没有做到.实在是事出有因,没能静下心来好好看代码.当然这不能作为我不更新的理由,时间挤挤还是有的,拖了这么久,该再写点东西了,不然人就怠 ...

  6. 跟我一起读postgresql源码(十)——Executor(查询执行模块之——Scan节点(下))

    接前文跟我一起读postgresql源码(九)--Executor(查询执行模块之--Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉. T_SubqueryScanState, T_Fun ...

  7. Linux内核的五大模块

    Linux内核的五大模块 (转自)https://blog.csdn.net/huangjingbin/article/details/19396235 Linux内核的五大模块 1.进程调度模块 2 ...

  8. linux内核自己添加模块(内核版本:3.0.101)

    做内核驱动第一步都是学习如何添加模块,这是基础,有了这个基础,剩下就是写代码了. 由于2.4到2.6内核版本的更新,无论是系统调用还是模块添加机制都有了巨大的变化,本人也因此饱经挫折,最后在3.0.1 ...

  9. 跟我一起读postgresql源码(五)——Planer(查询规划模块)(下)

    上一篇我们介绍了查询规划模块的总体流程和预处理部分的源码.查询规划模块再执行完预处理之后,可以进入正式的查询规划处理流程了. 查询规划的主要工作由grouping_planner函数完成.在具体实现的 ...

随机推荐

  1. 为按钮绑定实现js跳转

    页面代码 <button type="button" class="btn btn-xs btn-info" id="add" nam ...

  2. mac上如何搜索文件?

    在Mac上如果你用会了搜索功能那绝对是个事半功倍的技巧.因为Mac本身有强大的文件索引能力, 可以帮你快速的找到你需要的文件.就好比我要找到上周修改过的word文档应该怎么办? * 使用语音命令让Si ...

  3. 方法返回前面有if - else if - else ,最终返回值是?

    -(NSString *)testA{ int a = ?; ) { return @"a大于5"; } ) { return @"a不大于5"; } retu ...

  4. vue框架搭建--axios使用

    前后端数据交互作为项目最基础需求(静态的除外),同时也是项目中最重要的需求. 本文重点介绍axios如何配合vue搭建项目框架,而axios的详细使用介绍请移步使用说明 1.安装 cnpm insta ...

  5. [CF846D]Monitor题解

    看了一眼这题所用的操作,我觉得二维树状数组珂做,然后发现如果按时间顺序把节点一个个加进去再判会TLE,但发现二分时间明显比刚刚的做法快,于是二分时间+暴力插入该时间之内的点+树状数组维护即可AC 贴个 ...

  6. web css

    CSS圆角——透明圆角化背景图片 序言:第一章中我介绍了最基本的纯CSS圆角框的实现原理,并给出Demo,在本章中会对上一个模型作一些新的创新,实现将背景图片透明圆角化.并给出一些漂亮的通用演示效果. ...

  7. STL容器内数据删除

    STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...

  8. HDU 5179 beautiful number (数位dp / 暴力打表 / dfs)

    beautiful number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. php面试专题---7、文件及目录处理考点

    php面试专题---7.文件及目录处理考点 一.总结 一句话总结: 用脑子:基本文件操作和目录操作了解一波,不必强求 1.不断在文件hello.txt头部写入一行“Hello World”字符串,要求 ...

  10. Your first HTML form

    The first article in our series provides your very first experience of creating an HTML form, includ ...