linux-kernel - mtrr_add() 函数导致“警告:“mtrr_add”[/path/to/module.ko] 未定义”
问题描述
我有一个内核模块,我正在尝试使用mtrr_add()
函数。当我编译我的代码时,我得到WARNING: "mtrr_add" [/path/to/module.ko] undefined!
. 我发现了一条邮件列表消息:https ://patchwork.ozlabs.org/patch/510277/ ,其中提到删除mtrr_add()
并替换为arch_phys_wc_add()
. 如果我理解正确,arch_phys_wc_add()
是用于添加Write Combine (WC)
类型。是否有任何替换功能mtrr_add()
会添加writeback(WB)
类型?或者任何解决方法?
我的初始化模块代码如下,
#include <asm/mtrr.h>
//#include <uapi/asm/mtrr.h>
static int __init car_init(void){
printk(KERN_INFO "car module loaded\n");
int mtrr_add_r = mtrr_add(0xf7c20000, 4096, MTRR_TYPE_WRBACK,0); <-- throwing undefined warning
//int mtrr_add_r = arch_phys_wc_add(0xf7c20000, 4096);
printk( KERN_ALERT "mtrr_add_r: 0x%x\n",mtrr_add_r);
set_cpus_allowed_ptr(current,&saved_cpu_mask);
return 0;
}
dmesg
显示:
module_name: 未知符号 mtrr_add (err 0)
我的内核版本:Linux xxx 4.4.0-200-generic #232-Ubuntu SMP
gcc 版本:gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
解决方案
推荐阅读
- javascript - Can you have complete coverage when using the pure component pattern to test Gatsby's static queries?
- python - Königsberg Bridges using Networkx
- algorithm - How do I sign a curve25519 key in golang?
- javascript - 基本 JavaScript - 斐波那契数列生成器不工作
- php - After php artisan route:cache my routes stopped working because I have Closure based routes
- mysql - MySQL many to many table convention
- c# - 如何使用 C# 任务库下载和处理一系列数据
- java - 如何暂停我的主线程以便我的 JFrame 可以正常运行
- javascript - WebDriverIO - 从带有动态内容的下拉列表中选择选项
- swift - RealityKit 协作会话调试