通過proc我們可以很容易地使用讀取&寫入系統調用,如本例所示。 write on /proc entry through user space將數據寫入debugfs ---從設備驅動程序
但我正致力於使用調試信息從驅動程序傳遞給用戶空間。 我能找到這兩個示例代碼。這裏應用程序能夠使用mmap()系統調用來讀寫debugfs文件。
- http://people.ee.ethz.ch/~arkeller/linux/code/mmap_simple_kernel.c
- http://people.ee.ethz.ch/~arkeller/linux/code/mmap_user.c
但是,假如在使用Debugfs與設備驅動程序文件傳達我的情況的要求:
user-space application <-------> debugfs file <-------> Device driver
所以我可以使用相同的代碼mmap_simple_kernel。 c在我的--- >>設備驅動代碼--- >>和tr將數據直接從驅動程序中調入數據?但在這種情況下,我的驅動程序中會有兩個file_operations結構會導致一些問題?這是正確的方法嗎?
或者就像在mmap_user.c中的應用程序一樣 - 同樣的過程 - 我遵循我的設備驅動程序。並保持mmap_simple_kernel.c作爲debugfs條目的分離模塊?
你可以用'閱讀()'和'寫()'如果你需要的話,也可以在debugfs文件中使用。例如,如果你需要傳遞大量的數據,'mmap()'就會派上用場,但它並不是強制性的。 – Eugene
在我的其中一個項目中,我使用debugfs文件向用戶空間提供一些數據並控制我的內核空間系統,例如,請參閱[此文件](http://code.google.com/p/)內核黽/源/瀏覽/來源/型芯/ resolve_ip.c)。在debugfs(_「i_addr」_,_「func_name」_和_「func_i_start」_)中創建了三個文件,第一個文件是可寫的,其餘兩個文件是隻讀的。另請參閱如何在此處使用'debugfs_create_file()'。我還建議看看其他的[debugfs_create _ \ * *函數](http://lxr.free-electrons.com/source/include/linux/debugfs.h),它們可能更適合您的需求。 – Eugene
至於使用'mmap()'的另一個例子,這些鏈接是[在這個評論](http://stackoverflow.com/questions/11501527/ioctl-vs-netlink-vs-memmap-to-communicate-between-內核空間和用戶空間#comment15219915_11501527)。根據你想要完成的事情,這可能是有用的。 – Eugene