proc通訊是一種基於檔案系統的通訊:
主要步驟:
1:struct proc_dir_entry *input, *output; // proc_dir_entry定義檔案目錄結構體
2:/編寫對字元裝置檔案的讀寫操作函式/
static ssize_t mywrite(struct file *file,
const char __user *ubuf,size_t count, loff_t *ppos)
static ssize_t myread(struct file *file,
char __user *ubuf,size_t count, loff_t *ppos)
3:static struct file_operations fo_input =
; //填充file_operations結構體
static struct file_operations fo_output =
; //填充file_operations結構體
4:/在proc目錄下生成對應的裝置檔案,並和file_operations結構體繫結/
input=proc_create(「input」,0660,null,&fo_input);
output=proc_create(「output」,0660,null,&fo_output);
最後會在/proc 目錄下生成input和output檔案。
參考:
linux使用者與核心通訊方式
共享記憶體 ioctl sysfs procfs 訊息佇列 socket copy from user copy to user 以上同步通訊方式,由使用者態主動發起向核心態的通訊,核心無法主動發起通訊 netlink 非同步全雙工的通訊方式,它支援由核心態主動發起通訊,核心為netlink通訊提供...
作業系統 微核心通訊
在微核心架構下,乙個應用程式獲取系統服務通常需要通過程序間通訊的方式。mach通過兩種基本的抽象 埠和訊息,設計和實現一種間接通訊ipc。埠設計 mach將埠分為傳送者埠和接受者埠,mach的通訊不是指定的,而是傳送者從傳送埠傳送訊息,然後接收者可以從接受埠去拿訊息,傳送埠可以有多個,但接受埠只能有...
Linux核心通用鍊錶詳解
linux核心中充斥著大量的資料結構,這些資料結構很多都是使用結構體來表示 如cdev結構體用於描述乙個字元裝置,再如task struct結構體,是我們所說的程序控制塊pcb,用於描述乙個程序的所有資訊。追尋核心原始碼我們會發現很多都是表示裝置的結構體中都有list head這樣的字段,沒錯這就是...