我正在编写一个内核模块,它将检查 VFS 中的某些内容。在这个模块中,我需要使用定义为的内核 API “putname”:
#ifdef CONFIG_AUDITSYSCALL
void putname(const char *name)
{
if (unlikely(!audit_dummy_context()))
audit_putname(name);
else
__putname(name);
}
EXPORT_SYMBOL(putname);
当我在内核 3.6.10 的 Fedora 18 中编译它时,一切正常,模块工作正常,但是当我将它切换到内核 3.11.4 时。编译器给了我一个警告“putname is undefined”,当我用“__putname”替换“putname”时,内核模块可以编译,但是当它运行时,会出错。回溯显示它在 __putname 中。有没有人可以帮助我解决这个问题?谢谢