proc_create_data函式建立/proc/目錄下的檔案

轻轻的吻發表於2024-03-31

proc_create_data 是Linux核心中用於建立 /proc 虛擬檔案系統中的一個檔案介面函式。這個函式允許核心模組或驅動程式在 /proc 目錄下建立一個檔案節點,使用者空間的程式可以透過讀寫這個檔案來與核心模組進行互動,獲取或設定相關資訊。函式原型通常如下所示:

struct proc_dir_entry *proc_create_data(const char *name,
                                      umode_t mode,
                                      struct proc_dir_entry *parent,
                                      const struct file_operations *proc_fops,
                                      void *data);
  • name:要建立的檔名,將在 /proc 下的 parent 目錄下建立。
  • mode:建立的檔案許可權,類似於Unix檔案許可權,例如S_IRUGO | S_IWUSR表示檔案對所有使用者可讀,對檔案所有者可寫。
  • parent:父目錄的proc_dir_entry結構體指標,通常是 /proc 下的一個子目錄。
  • proc_fops:指向file_operations結構體的指標,定義了對這個檔案執行諸如open、read、write、ioctl等操作時的回撥函式。
  • data:傳遞給檔案操作函式的私有資料指標,通常用於在回撥函式中識別不同的例項。當使用者空間透過檔案系統介面對建立的 /proc 檔案進行操作時,核心會呼叫相應的 file_operations 結構體中的函式來處理請求,從而實現核心與使用者空間的資料互動。

示例:

// su806d/kernel4.14/drivers/usb/host

void usb_hub_test_init(void)
{
        /* create debugfs */
        wcn_usb_hub = debugfs_create_dir("usb_hub", NULL);
        if (!debugfs_create_file("cmd_test", 0444, wcn_usb_hub,
                NULL, &usb_test_fops)) {
                pr_err("%s debugfs_create_file fail!!\n", __func__);
                debugfs_remove_recursive(wcn_usb_hub);
        }

        /*creat proc node of usb_control*/
        proc_create_data("usb_control", 0666, NULL, &usb_hub_proc_fops, NULL);
}

  

相關文章