include #include #include #include #include #include #define max_len 100
//訊號sigio的處理函式
void input_handler(int num)
void main()
由此可見,為了在使用者空間中能處理乙個裝置釋放的訊號,它必須完成3項工作
(1)通過f_setown io控制命令設定裝置檔案的擁有者為本程序,這樣從裝置驅動發出的訊號才能被本程序接收到。
(2)通過f_setfl io控制命令設定裝置檔案支援fasync,即非同步通知機制。
(3)通過signal()函式連線訊號和訊號處理函式。
注:【fcntl系統呼叫】
功能描述:根據檔案描述詞來操作檔案的特性。
用法:
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
引數:
fd:檔案描述詞。
cmd:操作命令。
arg:供命令使用的引數。
lock:同上。
有以下操作命令可供使用
f_getfl :讀取檔案狀態標誌。
f_setfl :設定檔案狀態標誌。
f_getown:獲取當前在檔案描述詞 fd上接收到sigio 或 sigurg事件訊號的程序或程序組標識 。
f_setown:設定將要在檔案描述詞fd上接收sigio 或 sigurg事件訊號的程序或程序組標識
基於非同步通知機制的按鍵驅動
按下按鍵是驅動程式通知應用程式 應用程式裡面要註冊訊號處理函式 驅動程式給應用程式發訊號 發給誰,這就要應用程式告訴驅動pid了 怎麼發,是驅動裡面呼叫kill fasync 為了使裝置支援非同步通知機制,驅動程式涉及以下3項工作 1.支援f setown命令,能在這個控制命令處理中設定filp f...
linux裝置驅動中的非同步通知機制
非同步通知的意思是 一旦裝置就緒,則主動通知應用程式,這樣應用程式根本就不需要查詢裝置狀態,這一點非常類似於硬體上 中斷 的概念,比較準確的稱謂是 訊號驅動的非同步i o 訊號是在軟體層次上對中斷機制的一種模擬,在原理上,乙個程序收到乙個訊號與處理器收到乙個中斷請求可以說是一樣的.訊號是非同步的,乙...
Linux訊號 程序間非同步的通訊機制
一 概念和功能 訊號實際上是乙個軟中斷,用於通知程序發生了某些事,該如何處理。實際上也歸為一類程序間通訊方式,訊號的生命週期 訊號的產生 訊號的註冊 訊號的阻塞 遮蔽 訊號的登出 訊號的處理 二 檢視訊號 kill l 檢視linux下全部訊號,可看出訊號是由編號和巨集組成 kill並不是殺死乙個程...