是否可以在另一个内核模块中共享一个内核模块中定义的Hash_table。
/*Hash table declarartion and definition*/ DEFINE_HASHTABLE(my_hash_table, HASH_TABLE_BITS);
我将这个表填充到一个模块中,但是我想在另一个模块中访问这个表。
外部申报工作在这里。 extern DEFINE_HASHTABLE(...,...)
DEFINE_HASHTABLE
是变量的定义 。 对于声明变量(不定义它)使用DECLARE_HASHTABLE
:
extern DECLARE_HASHTABLE(my_hash_table, HASH_TABLE_BITS);
请注意,在Linux内核中,需要为在另一个模块中定义的make变量在另一个模块中使用额外的步骤。
首先,您需要从模块中导出符号,其中定义了变量:
EXPORT_SYMBOL(my_hash_table);
其次,直到你在单一目录下建立两个模块(使用单一的makefile),你需要在Makefile
指定用于编译其他模块的模块,它应该使用来自第一个模块的modulee.symvers
文件:
KBUILD_EXTRA_SYMBOLS := <dir-with-symbol-provider-module>/modulee.symvers