2013-02-28 43 views
1

我怎樣才能讓我的驅動程序採取行動對以下命令貓&回聲。命令爲導向的Linux驅動程序

貓是否調用read()的設備驅動程序的系統調用?
回顯是否調用設備驅動程序的write()系統調用?

我想實現這兩個命令貓&回聲我的司機控制8領導。

如果我贊同它給光暈導致3:-----

echo "3=1" > /dev/led_node 

如果我的貓它提供了以下外把狀態:-----

cat /dev/led_node 
0 0 
1 0 
2 0 
3 1 
4 0 
5 0 
6 0 
7 0 

請建議什麼部分或系統調用的驅動程序與貓進行交互?

回答

0

可以輕鬆地查看如何使用cat爲爲例,strace讀取文件。這裏有一個例子:

$ echo '123' >/tmp/test.txt 
$ strace cat /tmp/test.txt 

在輸出中,你可以當場open()電話:

open("/tmp/test.txt", O_RDONLY)   = 3 

它返回3 - 與/tmp/test.txt相關的文件描述符。再往下的輸出,你可以看到:

read(3, "123\n", 65536)     = 4 

這需要文件描述符3並從中讀取(使用65536字節的緩衝區大小並取回4個字節)。基本上回答你的第一個問題 - cat確實叫read()。您可以爲echo做同樣的事情,並找出它叫write()

在您的字符設備驅動程序,你就必須執行這些調用。有關如何與有用示例一起使用的詳細說明,請查看Linux Device Drivers, Chapter 3

希望它有幫助。祝你好運!

0

貓:系統調用驅動程序的讀取功能進行交互。 回聲:系統調用與您的驅動程序的寫入功能進行交互。事情是,如果你的貓在/ dev/led_node,設備文件/節點被打開即調用open系統調用,然後讀取系統調用被調用時,在讀取不斷循環,除非返回(目前以讀取任何數據)和atlast關閉系統調用,這會關閉設備節點/文件。