Linux USB口的熱插拔

2021-06-18 02:10:44 字數 1039 閱讀 1369

目前要做乙個在嵌入式平台上的usb口的熱插拔事件。

經過我現在的分析總結目前有如下方法:

1,定時檢查/proc/scsi/scsi檔案

此方法只能在pc上,但在嵌入式平台上不可用。

2,netlink方式

使用netlink.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define uevent_buffer_size 2048

static int init_hotplug_sock()

setsockopt(s, sol_socket, so_rcvbuf, &buffersize, sizeof(buffersize));

ret = bind(s, (struct sockaddr *)&snl, sizeof(struct sockaddr_nl));

if (ret < 0)

return s;

}int main(int argc, char* argv)

;recv(hotplug_sock, &buf, sizeof(buf), 0);

printf("%s\n", buf);

/* usb 裝置的插拔會出現字元資訊,通過比較不同的資訊確定特定裝置的插拔,在這新增比較** */

}return 0;

經過測試發現只能實現插與拔,但是無法具體到具體是什麼裝置。

3,使用mdev。

此方法相當麻煩,現在在研究中。

4,使用最原始的解析檔案方式

此方法相當麻煩,生成很多檔案。

就是用cat /proc/bus/usb/devices的資訊生成的檔案進行解析。

目前我已經完成此功能。雖然能用,但是效率太低。

linux下實現USB口的熱插拔

目前要做乙個在嵌入式平台上的usb口的熱插拔事件。經過我現在的分析總結目前有如下方法 1,定時檢查 proc scsi scsi檔案 此方法只能在pc上,但在嵌入式平台上不可用。2,netlink方式 使用netlink.include include include include include...

玩轉開源 Linux C 檢測網口熱插拔

int netdetect char net name,int statue strcpy ifr.ifr name,net name 要檢測網絡卡的名稱 if ret ioctl skfd,siocgifflags,ifr 0 close skfd if ifr.ifr flags iff run...

熱插拔操作

熱插拔事件的實際控制是通過一套儲存於 kset hotplug ops 結構的方法完成.struct kset hotplug ops 乙個指向這個結構的指標在 kset 結構的 hotplug ops 成員中.如果乙個給定的kobject 不包含在乙個 kset 中,核心搜尋整個層次 通過 par...