1. 使用poll機制 1.1 如何使用? a. open("/dev/HPD"); b. poll狀態發生變化 c. read確定接上還是接下 1.2 情景分析: 1. APP使用open("/dev/HPD"); 2. APP : poll 驅動:poll 休眠 中斷 3. APP : read ...
1. 使用poll機制
1.1 如何使用?
a. open("/dev/HPD");
b. poll狀態發生變化
c. read確定接上還是接下
1.2 情景分析:
- APP使用open("/dev/HPD");
- APP : poll -> 驅動:poll -> 休眠 -> 中斷
- APP : read
2. state主動上報數據
2.1 switch設備簡介:
2.1.1. 構造switch_dev:
.name = "hdmi";
.state = 1,0;
2.1.2 switch_dev_register
a. 創建class_create("switch");
/sys/class/switch
b. 在類下創建設備device_create("hdmi");
/sys/class/switch/hdmi
c. device_create_file("state");
/sys/class/switch/state
2.2 使用switch系統
2.2.1 第一種方法:
- 中斷程式設置switch_dev的state
- APP讀
/sys/class/switch/state
這種方法相當耗資源
2.2.2 第二種方法:
- APP設置網路(讀數據)
- 驅動:中斷-> schdule_work -> 發送網路數據
a. 構造envp[]
b. kobject_uevent_env發送給user app
b.1 使用網路發送envp
b.2 /sbin/hotplug
- APP被喚醒,讀、處理