[英]How to use ioctl() from kernel space in Linux?
是否可以從Linux內核模塊調用ioctl
? 任何人都可以舉例說明它是如何使用的嗎?
您可以嘗試調用sys_ioctl
。
如果使用CONFIG_COMPAT
編譯內核,則導出它。
或者,如果您有設備驅動程序的struct file_operations
,則可以直接調用其ioctl
處理程序。
但是,ioctl句柄會指望指針參數位於當前運行的進程的地址空間中,而不是內核地址空間中。 copy_from_user
將用於讀取它們。 如果指向內核地址空間, copy_from_user
將失敗。 我不知道你會怎么解決這個問題。
編輯:
如果你將在下面的代碼之間調用ioctl處理程序而不是copy_from_user
將永遠不會失敗。
mm_segment_t fs;
fs = get_fs(); /* save previous value */
set_fs (get_ds()); /* use kernel limit */
/* system calls can be invoked */
set_fs(fs); /* restore before returning to user space */
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.