0
我有一组代码在模块mod
导出的函数foo
上继续。 而我有一个mod
的较新版本,它可以导出foo_implementation
。 的foo
成为有宏...如何更改由内核模块中的EXPORT_SYMBOL导出的名称?
所以,问题是:如何表达EXPORT_SYMBOL()
到foo_implementation
导出为foo
? 用最少的修改代码,如果可能的话...
难道是好的改变,说
void foo_implementation(int arg) { ... }
EXPORT_SYMBOL(foo_implementation);
到
void foo_implementation(int arg) { ... }
EXPORT_SYMBOL(foo_implementation);
#ifdef foo
#undef foo
#endif
void foo(int arg) { return foo_implementation(arg); }
EXPORT_SYMBOL(foo);
???
'void(* foo)()'声明一个**指针**给函数。虽然调用'foo()'和'foo_implementation()'在语义上是等价的,**符号**'foo'和'foo_implementation'是**不同**。而且,如果'foo'被定义为一个*宏*,你的声明是不正确的。 '我有一组代码可以在模块mod输出的函数foo上传递函数。' - 是否允许将'foo()'的定义添加到这个代码中? – Tsyvarev
我希望是的:) 即使你的意思是用'void foo(){foo_impl();}'替换'void(* foo)()= ...' – jno
我的意思是修改需要'foo'导出的代码(换句话说,**使用**'foo'),而不是实际导出它的代码。 – Tsyvarev