extern unsigned long current_rx_time;
EXPORT_SYMBOL(current_rx_time);
int netif_rx(struct sk_buff *skb)
{
current_rx_time = jiffies;
}
我在dev.c中修改了内核源代码,如上所示。后来我在procfs中创建了一个可加载的内核模块,并使用currentrx_time将它发送到用户空间,如下所示:
static int my_proc_show(struct seq_file *m, void *v)
{
//I AM JUST PRINTING THAT VALUE BELOW
seq_printf(m, "%lu\n", current_rx_time *1000/HZ);
return 0;
}
但是我在上面编译我的模块时遇到错误,因为current_rx_time
未声明。有人能告诉我如何解决这个问题吗?
答案 0 :(得分:2)
首先,你需要声明你的变量然后你可以导出它。
所以只需在dev.c中声明它
unsigned long current_rx_time;
然后将其导出为dev.c
EXPORT_SYMBOL(current_rx_time);
以及你想要使用它的其他可加载模块(比如在temp2.c中)...
extern unsigned long current_rx_time;
现在确保当你编译temp2.c时,dev.c也正在编译。
答案 1 :(得分:0)
第二个代码需要声明外部变量,因此链接器可以知道它来自外部:
extern unsigned long current_rx_time;