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, "%lun", current_rx_time *1000/HZ);
return 0;
}
但当我编译上面的模块时,由于current_rx_time
未声明,我遇到了一个错误。有人能告诉我如何解决这个问题吗?
首先需要声明变量,然后才能导出它。
所以只需将其声明为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也正在进行编译。
第二个代码需要声明外部变量,这样链接器就可以知道它来自外部:
extern unsigned long current_rx_time;