日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

liunx驱动----异步通知

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 liunx驱动----异步通知 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查詢:消耗資源

中斷:read 一直要去讀 poll :指定起始時間 異步通知 signal 測試程序 include <stdio.h> include <signal.h>void my_signal(int signum) {static unsigned int cnt;printf("signum = %d, %d timer\n",signum ,++cnt);//liunx 命令行中是行緩沖的。 } int main(int argc,char **argv) {signal(SIGUSR1,my_signal);while(1){sleep(1000);}return 0; } kill -USR1 PID 發送信號給進程

?

信號的要點
  • 先注冊一個信號處理函數 signal(SIGUSR1,my_signal);
  • 誰來發送信號
  • 發給誰
  • 誰來接受信號
  • 目標:按下按鍵時驅動程序通知應用程序
  • 應用程序注冊信號處理函數
  • 誰發送信號:驅動程序
  • 發給誰:發給應用程序 app=>告訴驅動自己的PID
  • 怎么發:kill_fasync()
  • 在應用程序中:

    signal(SIGIO,my_signal);//開啟異步通知 fcntl(fd, F_SETOWN, getpid());//獲取自身的PID getpid() 也就是確定發給誰這個問題 Oflags = fcntl(fd, F_GETFL); //獲取當前的flag fcntl(fd, F_SETFL, Oflags | FASYNC);//修改當前Flag 設置為異步通知的Flag ? 在驅動程序中 通知應用程序有信號來了 ?? ?? fasync_helper(fd, file, on, &button_signal); 的目的是為了 初始化 button_signal button_signal 在文件中定義:static struct fasync_struct *button_signal; ? ?? ? 目的:通過驅動程序來通知應用程序 來讀某些東西 ?

    轉載于:https://www.cnblogs.com/hjxzjp/p/10493119.html

    總結

    以上是生活随笔為你收集整理的liunx驱动----异步通知的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。