检查内核反馈uevent消息,并提取出USB插入事件

本文介绍了如何在Linux驱动开发中,通过监听uevent消息来捕获USB设备插入事件,以实现USB事件的独立处理。具体实现包括创建接口以及使用线程持续调用接口来检测USB插入操作。
摘要由CSDN通过智能技术生成

开发中,其他模块提出需求,需要我提供一个接口,另一个模块会启动独立线程,不断的调用这个接口,来实现USB事件的分离和提取,详细的接口代码如下:

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <linux/netlink.h>

#define UEVENT_MSG_LEN 2048
#define UEVENT_LOG_SAVE 1

struct uevent_struct {
    const char *action;
    const char *path;
    const char *subsystem;
    const char *firmware;
	const char *usbstate;
    int major;
    int minor;
};
static int open_uevent_struct_socket(void);
static void parse_event(const char *msg, struct uevent_struct *uevent_struct);

/*******************************************************************
* Function		:	main
* Description	:	Keep Look For Monitor Uevent And Receive Uevent
* Input			:	int argc
* 				:	char* argv[]
* Date			:	20151015
********************************************************************/
int main(int argc, char* argv[])
{
    int device_fd = -1;
    char msg[UEVENT_MSG_LEN+2];
    int rcvlen;
    int ret;
    fd_set fds;
    struct timeval tv;

    device_fd = open_uevent_struct_socket();
    printf("device_fd = %d\n", device_fd);

    do {
        FD_ZERO(&fds);
        FD_SET(device_fd, &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值