2010-12-07 100 views
1

寫功能我寫了一個Linux設備驅動程序,實現的功能device_write這樣的:關於Linux設備驅動

static int device_write(struct file* file,const char* buff,int count, loff * offp) 
{ 
//some implementation 
printk("write value %x to card\n",value); 
//some implementation 
} 

我也實現了device_read功能,並有中printk打印一些信息在裏面。 問題是當我在應用程序中使用read(fd,buff,1)時,顯示printk結果,但是當我使用write(fd,buff,1)時,沒有printk的結果。device_write函數不能被調用什麼會導致這個問題?有沒有人遇到過這種問題?任何人都可以給我一些幫助和建議嗎?

+0

http://freshmeat.net/projects/dtrace-for-linux? – nmichaels 2010-12-07 17:40:43

+0

我們需要更多的信息。什麼是「價值」?你爲什麼認爲寫作不被稱爲?在你的問題中你沒有這樣的東西,代碼甚至不可編譯。 – Falmarri 2010-12-07 17:40:54

回答

3

這只是一半的答案,但對於評論太大了。

您的device_write函數中的其他操作是否正在發生?

device_write函數頂部做一個非常簡單的printk,看看是否打印。類似於

static int device_write(struct file* file,const char* buff,int count, loff * offp) 
{ 
    printk("%s: %s\n", __FILE__, __func__); 

無論發生在函數中的任何其他情況如何。如果打印出來,那麼你可以縮小從哪裏出發。

如果這不起作用,那麼請確保您實際上在設備結構中設置了函數指針。或者,也許你的錯誤在測試應用程序中。你確定你已經打開設備的寫權限?如果您從最初編寫的程序複製代碼來測試讀取功能,那將是一個容易犯的錯誤。

相關問題