c-如何在linux内核中重用变量


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;

相关内容

  • 没有找到相关文章

最新更新