query_module - 向内核查询和模块有关的各个位
总览
#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 - 向内核查询和模块有关的各个位的更多相关文章
- 解析 Linux 内核可装载模块的版本检查机制
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...
- 跟我一起读postgresql源码(八)——Executor(查询执行模块之——可优化语句的执行)
2.可优化语句的执行 可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理.该模块对外提供了三个接口: ExecutorStart.Executo ...
- 跟我一起读postgresql源码(二)——Parser(查询分析模块)
上篇博客简要的介绍了下psql命令行客户端的前台代码.这一次,我们来看看后台的代码吧. 十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的.即:后台接到前台 ...
- linux实践——内核编程 基础模块
一.内核模块的概念 Linux模块(module)是一些可以作为独立程序来编译的函数和数据类型的集合.内核模块给我们带来的便利是模块本身并不被编译进内核文件,可在内核运行期间动态的安装或卸载.因为如果 ...
- 跟我一起读postgresql源码(六)——Executor(查询执行模块之——查询执行策略)
时光荏苒,岁月如梭.楼主已经很久没有更新了.之前说好的一周一更的没有做到.实在是事出有因,没能静下心来好好看代码.当然这不能作为我不更新的理由,时间挤挤还是有的,拖了这么久,该再写点东西了,不然人就怠 ...
- 跟我一起读postgresql源码(十)——Executor(查询执行模块之——Scan节点(下))
接前文跟我一起读postgresql源码(九)--Executor(查询执行模块之--Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉. T_SubqueryScanState, T_Fun ...
- Linux内核的五大模块
Linux内核的五大模块 (转自)https://blog.csdn.net/huangjingbin/article/details/19396235 Linux内核的五大模块 1.进程调度模块 2 ...
- linux内核自己添加模块(内核版本:3.0.101)
做内核驱动第一步都是学习如何添加模块,这是基础,有了这个基础,剩下就是写代码了. 由于2.4到2.6内核版本的更新,无论是系统调用还是模块添加机制都有了巨大的变化,本人也因此饱经挫折,最后在3.0.1 ...
- 跟我一起读postgresql源码(五)——Planer(查询规划模块)(下)
上一篇我们介绍了查询规划模块的总体流程和预处理部分的源码.查询规划模块再执行完预处理之后,可以进入正式的查询规划处理流程了. 查询规划的主要工作由grouping_planner函数完成.在具体实现的 ...
随机推荐
- 在子组件中触发事件,传值给父组件-vue
1.通过$emit触发事件 在子组件<x-test>中触发事件: <button @click="toSearchProduct()">搜索</but ...
- mongodb 用户 权限 设置 详解
原文地址:http://blog.51yip.com/nosql/1575.html 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限 ...
- springboot 中的 thymeleaf 页面进阶小知识
我们做好了登录页,那设计一个场景吧,比如我们登录后跳转到公司主页,想从公司主页再跳转到员工列表页: 这样的场景我们该如何实现,首先要知道一些基础知识,就是SpringBoot的一些关于请求的架构知识: ...
- error: call of overloaded ‘sqrt(double&)’ is ambiguous
OpenFOAM定义了新的sqrt,当引入新的Library时,必须显式地使用std::sqrt(),否则会报如下错误: error: call of overloaded 'sqrt(double& ...
- jenkins解决python不是内部命令
1.在 Windows 提示符下运行是没有问题. 2.把Jenkins项目配置中 python main.py 修改成python可执行文件全路径:D:\Python35\python.exe m ...
- kafka集群安装及基本命令行使用
集群安装 环境介绍 本次安装kafka集群利用的是自带的zooKeeper,其实最好是把kafka和zooKeeper部署在不同的节点上,这样更高可用. 三个节点: kafka1:192.168.56 ...
- 一篇文章让你详细了解何为JSON
JSON详解: JSON的全称是“ JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...
- 关于KindEditor编辑器,word文档中的图文全选粘贴,在编辑器中不显示图片的问题
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...
- [CF-GYM]Abu Tahun Mod problem题解
前言 这道题比较简单,但我还是想了好一会 题意简述 Abu Tahun很喜欢回文. 一个数组若是回文的,那么它从前往后读和从后往前读都是一样的,比如数组\(\left\{1\right\},\left ...
- Linux shell 归纳之 ~/. 是什么意思
假设用户名目录是:/home/test ~> cat ~/.profile ~ 是代表用户名目录/home/test/ .是代表隐藏文件, profile 就是home/test目录下的隐藏文件