作者 主題: kernel program的問題...  (閱讀 5985 次)

0 會員 與 1 訪客 正在閱讀本文。

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 於: 2001-05-17 22:34 »
今天遇到一個很奇怪的問題,明明 kernel 有宣告
#define MODULE
#define __KERNEL__

#include

在程式內有一行
phys_to_virt() 的函式,

這個程式之前 run都沒有問題
可是今天都會出現
unresolved symbol phys_to_virt();

我不知道出了什麼問題... 不過就是很簡單拿來測試的程式.... ><

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 回覆 #1 於: 2001-05-18 00:37 »
我是沒有玩過phys_to_virt(),不過應該是沒有問題啦.phys_to_virt(phys_addr)經常有用到的呀.更奇怪的是你說以前可以run現在不行?
我有時間看看phys_to_virt()好了.

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 回覆 #2 於: 2001-05-18 09:38 »
我也覺得寄怪,其實覺得語法都沒有錯就是了....

不過 phys_to_virt() 在 i386 是使用 extern inline 的宣告
只是再包一個 __va() 的函數,怪的是,我直接使用 __va() 就可以用了.....
可是在某些平台,是使用

#define phys_to_virt .....

不管了,還有其他事,先用 __va()
等到編進核心的時候,再改用 phys_to_virt()
我覺得可能是我 compile 的參數下錯,可是又沒有道是其他的也不能用!

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 回覆 #3 於: 2001-05-20 00:18 »
真的是怪問題. >_<
我看你如果想知道答案,只有去bbs或者news裡面問啦
那裡面的高手比較多.小弟我是真的想不通為甚麼.也沒有
碰到過這種問題.

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 回覆 #4 於: 2001-05-21 10:28 »
呃,找到了....

加個 -O2 就可以了,將 inline 做展開!

...

  • 酷學園旁聽生
  • 俺是博士!
  • *****
  • 文章數: 5607
    • 檢視個人資料
kernel program的問題...
« 回覆 #5 於: 2001-05-23 08:49 »
可是按照道理來說,-O2能compile的東西,沒有理由
不能直接compile呀. inline展開應該只是效能
上的提高吧. 不過我記得,如果function是用 inline void a_function(int x) 來做.好像就不一樣了吧. 不過我沒有
玩過.


Goldencat