資源簡介
hotplug 熱插拔 測試程序,程序源碼,運行程序,插入和拔出U盤,程序會捕獲熱插拔信息。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?nk.h>
#include?
static?int?init_hotplug_sock(void)
{
????struct?sockaddr_nl?snl;
????const?int?buffersize?=?16?*?1024?*?1024;
????int?retval;
????memset(&snl?0x00?sizeof(struct?sockaddr_nl));
????snl.nl_family?=?AF_NETlink;
????snl.nl_pid?=?getpid();
????snl.nl_groups?=?1;
????int?hotplug_sock?=?socket(PF_NETlink?SOCK_DGRAM?NETlink_Kobject_UEVENT);
????if?(hotplug_sock?==?-1)?{
????????printf(“error?getting?socket:?%s“?strerror(errno));
????????return?-1;
????}
????/*?set?receive
?????*?buffersize
?????*?*/
????setsockopt(hotplug_sock?SOL_SOCKET?SO_RCVBUFFORCE?&buffersize?sizeof(buffersize));
????retval?=?bind(hotplug_sock?(struct?sockaddr?*)?&snl?sizeof(struct?sockaddr_nl));
????if?(retval?0)?{
????????printf(“bind?failed:?%s“?strerror(errno));
????????close(hotplug_sock);
????????hotplug_sock?=?-1;
????????return?-1;
????}
????return?hotplug_sock;
}
#define?UEVENT_BUFFER_SIZE??????2048
int?main(int?argc?char*?argv[])
{
????int?hotplug_sock?=?init_hotplug_sock();
????while(1)
????{
????????char?buf[UEVENT_BUFFER_SIZE*2]?=?{0};
????????recv(hotplug_sock?&buf?sizeof(buf)?0);?
????????printf(“%s\n“?buf);
????}
????return?0;
}
- 上一篇:PCI設(shè)備BAR空間的初始化
- 下一篇:基于PSO-SVM負荷預(yù)測
評論
共有 條評論