簡體   English   中英

如何在Linux中使用內核空間的ioctl()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM