繁体   English   中英

如何定义几个源文件访问的linux内核变量?

[英]how to define linux kernel variable accessed by several source file?

几个小时我已经搜索了我的问题的答案,但没有用。

我的问题:我想定义一个可以通过linux内核中的两个文件访问(w / r)(共享)的变量: source/arch/x86/kvm/x86.csource/kernel/sched/core.c

我尝试失败:我尝试使用export_symbolexport_symbol中定义全局x86.c 但编译错误消息说:

var是未定义的引用

还有其他解决方案吗? 我是linux内核编程的新手。 提前致谢。

当你想在内核模块中使用全局变量时,你应该使用EXPORT_SYMBOL()或EXPORT_SYMBOL_GPL()或EXPORT_SYMBOL_GPL_FUTURE():例如:

 int myvar;
 EXPORT_SYMBOL(myvar);

那你应该用

extern int myvar

在使用它之前,在另一个要使用它的文件中。

您可以在内核源代码中的三个不同级别考虑内核符号(函数或数据对象,变量)及其可见性:

"static", - visible only within their own source file
"external" - visible to any other code built into the kernel itself
"exported" - visible and available to any loadable module. 

您还可以考虑其他模块应如何使用导出的符号,通常使用以下方法之一:

EXPORT_SYMBOL() - exports to any loadable module, or
EXPORT_SYMBOL_GPL() - exports only to GPL-licensed modules. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM