我目前正在开发一个内核模块,该模块将在Xen的非特权域内运行。该模块应调用
xen/grant_table.h: gnttab_grant_foreign_access()
但是当我要插入它时,出现错误消息:
Unknown symbol gnttab_grant_foreign_access (err 0)
我检查了内核版本,我所针对的版本和在非特权域中运行的版本都匹配。更准确地说,uname -r
和modinfo MODULE
报告的版本字符串是相等的。
/proc/kallsyms
列出了内核要导出的函数/符号:
ffff00000853d088 T gnttab_grant_foreign_access
我发现奇怪的是,在运行时
nm MODULE
我得到gnttab_grant_foreign_access
是未定义的符号,但是printk
也未定义。
U gnttab_grant_foreign_access
U printk
在此post中,我读到,必须专门针对DOM0内核而不是非特权域之一构建内核模块。由于这是我唯一能找到的资源,并且该文档在该主题上有点稀疏,因此我想在这里问是否确实如此?这让我有些奇怪,因为我想将模块加载到版本A的内核中,但必须将其编译为版本B的内核。