Linux Device Drvier使用flip_open來讀取檔案
這篇文章主要就是寫如何從Linux Device Driver去讀取檔案的範例,
主要是在Linux Device Driver不能夠直接使用C語言內建的FILE的函數,
必須使用kernel內建的函數。然而有些其實我也有不太懂的部份,
大多數都是從網路上找到的範例,然後不小心成功了 XD。希望這篇對需要
的人有所幫助。
Device Driver的內容:test.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include |
先在/tmp底下建立test.txt,內容如下:
abcdefghijk |
Makefile的內容:
$> make clean
obj-m:= test.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean |
$> make clean
$> make
就會產生test.ko
$> sudo insmod test.ko
使用lsmod來看看test的module有沒有安裝完成
$> lsmod
Module Size Used by
test 656 0
在用dmesg來看看我們的driver有吐出什麼訊息,我這邊只有擷取我要的部份,不然其實他是很多的。
從dmesg來看我們已經可以從Driver去正確的讀取檔案的內容了。
$> dmesg
[30458.291722] Test: init
[30458.291733] Test: data is 97
[30458.291734] Test: data is 98
[30458.291735] Test: data is 99
[30458.291735] Test: data is 100
[30458.291736] Test: data is 101
[30458.291737] Test: data is 102
[30458.291738] Test: data is 103
[30458.291739] Test: data is 104
[30458.291743] Test: data is 105
[30458.291743] Test: data is 106
留言