首页 > 编程知识 正文

cas latency设置多少(EXPORT_SYMBOL的使用并以使用do_adjtimex调节内核tick_length(滴答长度)为例的说明)

时间:2023-05-03 12:53:44 阅读:121273 作者:1745

EXPORT_SYMBOL显示在2.6内核中,可将内核中的函数导出到全局符号表中,供其他内核模块使用,包括用户自己编写的内核模块。 有一些限制。 此导出的符号不能是静态类型。 由于必须使用内核的do_adjtimex ()函数调节tick_length,因此可以在/kernel/time/ntp.c中找到该函数。 这里举个例子。

必须首先在函数定义后输入“export_symbol(do_adjtimex )”。 然后,在该c文件的开头包含module.h头文件(#include linux/module.h )。 在这种情况下,必须编译内核。

而且,我自己创建的内核模块会在extern中声明这个函数,但我写的这个模块包含linux/timex.h,其中已经在extern中声明了,所以不需要声明。 这允许在内核模块中使用此函数。

要验证是否已导出此函数,可以使用cat/proc/kallsyms|grep do _ adjtimex查看。

一个实际使用的问题是,2.6.35内核make内核模块没有问题,插入时发生了错误。 对于Unknow symbol,没有遇到2.6.32。 在这个问题上找不到说明和解决方案。 (编译内核时的选项几乎没有区别。)

其实这些基本上在很多博文中都有提到,这里顺便介绍一下do_adjtimex ()的使用方法。 adjtimex ()根据结构更改内核中的相应参数,并在此结构中返回。 do_adjtimex ) ),但与后者相比,只是从用户空间到内核空间的复制和从内核空间到用户空间的复制两个阶段更多。 两者的使用方法一致。 但是,有需要注意的地方。 对于此示例中的tick,由于错误的mode可能会导致运行失败,因此使用tx.modes |=ADJ_TICK时很可能会禁用该参数。 保险的使用方法是清除模式后根据需要取异或,或者直接设为tx.modes=ADJ_TICK。

为了进行验证,必须在终端上运行adjtimex -p。 这是一个包。 如果没有的话,APt-get安装就可以了。 可以输出适当的内核参数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。