2014-04-22 39 views
1
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如下圖所示將其發送到用戶空間:如何在linux內核中重用該變量?

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是未申報。有人能告訴我如何解決這個問題嗎?

回答

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也正在編譯。

0

第二個代碼需要聲明的外部變量,因此鏈接器就可以知道它是從外面傳來:

extern unsigned long current_rx_time;