资源简介

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;

}

评论

共有 条评论