2015-06-05 39 views
0

我有一個主號碼100和輔號碼120 這裏一個內核模塊MyModule的閱讀是我做過什麼:從設備文件

make all 
sudo insmod ./myModule.ko 
mknod ~/myModule c 100 120 

當我檢查日誌與

cat /proc/syslog 

然後它顯示了init函數中的printk()。

但我也實現此功能:

ssize_t myModule_read(struct file *f, char __user *user_buffer, size_t num, loff_t *offset); 

它提供了一個的printk()當一個進程從設備文件讀取。 由於我的設備文件在我的主目錄,我試過如下:

cat ~/myModule 

hexdump ~/myModule 

,但它說,沒有這樣的設備或地址。

那麼我怎樣才能實際觸發讀取(或釋放)功能呢?

編輯: 如果mknod是冗餘的:設備文件也不在/ dev /目錄中。 但它顯示出來:

cat /proc/devices 
+1

安裝有'nodev你的home目錄'選項? –

+0

不是我所知道的。它使用了不同的設備。 但是既然我們在這裏:我是否真的必須用mknod創建設備文件還是這是多餘的? –

+1

除了'mknod'之外,我還不知道在Linux上這樣做,但可能會有一個。發佈您的設備註冊碼。 –

回答

1

你需要確保你設置cdev結構的struct file_operations *ops從外地返回cdev_alloc()

myModule->ops = &fops;