通过socket得到usb热插拔信息

static int init_hotplug_sock(void)
 183 {
 184
 185     struct sockaddr_nl snl;
 186     const int buffersize = 16 * 1024 * 1024;
 187     int retval;
 188
 189     memset(&snl, 0x00, sizeof(struct sockaddr_nl));
 190     snl.nl_family = AF_NETLINK;
 191     snl.nl_pid = getpid();
 192     snl.nl_groups = 1;
 193
 194     int hotplug_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
 195     if (hotplug_sock == -1)
 196     {
 197         printf("error getting socket: %s", strerror(errno));
 198         return -1;
 199     }
 200
 201     /* set receive buffersize */
 202
 203     //setsockopt(hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
 204     retval = bind(hotplug_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));
 205     if (retval < 0) {
 206         printf("bind failed: %s", strerror(errno));
 207         close(hotplug_sock);
 208         hotplug_sock = -1;
 209         return -1;
 210     }
 211     pthread_mutex_init (&mount_mutex,NULL);
 212     return hotplug_sock;
 213
 214 }

 

 

if( (hotplug_sock >= 0) && FD_ISSET(hotplug_sock, &fd))
           {
                   char buf[4096] = {0};
                   recv(hotplug_sock, &buf, sizeof(buf), 0);

           }

通过判断buf中的“add”和"remove"得到拔插的状态

 

Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1
Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1/usbdev1.4_ep00
Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1/1-1:1.0
Hotplug: add@/class/scsi_host/host1
Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1/1-1:1.0/usbdev1.4_ep81
Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1/1-1:1.0/usbdev1.4_ep02
Hotplug: add@/class/usb_device/usbdev1.4
[cascade_ui.c:372]Message:Pd900 code=20f  key_eventkind  =0
199997: BrowserSendCustomInput(527)A
Hotplug: add@/devices/platform/brcm-ehci.0/usb1/1-1/1-1:1.0/host1/target1:0:0/1:0:0:0
Hotplug: add@/class/scsi_disk/1:0:0:0
Hotplug: add@/block/sdb
Hotplug: add@/block/sdb/sdb1
Hotplug: add@/class/scsi_device/1:0:0:0
Hotplug: add@/class/scsi_generic/sg0
Hotplug: mount@/block/sdb/sdb1

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值