读书人

epoll中epoll_event结构体的含义,该如

发布时间: 2012-03-28 15:40:03 作者: rapoo

epoll中epoll_event结构体的含义
不知道大家在用到epoll的时候wait返回的epoll_event结构体中用到过data;
结构如下:
struct epoll_event
{
uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
} __attribute__ ((__packed__));

typedef union epoll_data
{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;

epoll_data中的fd是文件描述符,这个很好理解,其他的呢
ptr是指向这个fd的指针?u32和u64分别是做什么的? 有什么作用?有高人出来讲解下吗?

[解决办法]
关于u32和u64我觉得是为了对齐,保证这个联合体长度为8个字节。
看了一下sys_epoll_×的实现,可以看到内核里epoll_event的定义

C/C++ code
struct epoll_event {    __u32 events;    __u64 data; 

读书人网 >UNIXLINUX

热点推荐