[英]Why epoll_event only have 32bit pointer when getted from epoll_wait
I have func1 that add event: c++
我有 func1 添加事件: c++
func1(args...) {
//....do something.....
struct epoll_event ev;
ev.events = events;
ev.data.ptr = (void*)(*s); // s is own data.
printf("add io event address is %p seted is %p\n", *s, ev.data.ptr);
return epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &ev);
}
but when i use epoll_wait int func2, struct epoll_event only get half pointer address:但是当我使用 epoll_wait int func2 时,struct epoll_event 只得到半指针地址:
func2(args...) {
// ....do someting....
int cnt = epoll_wait(event->epollfd, event->events, MAX_EVENT_EACH_LOOP, usec);
if (cnt > 0) {
event->status = SD_EVENT_INITIAL;
printf("epoll wait get %p %p\n", static_cast<sd_event_source *>(event-
>events[0].data.ptr), (void *)event->events[0].data.u32);
event->event_cnt = cnt;
}
/// do someting
return cnt;
stdout info:标准输出信息:
add io event address is 0x564fb2801470 seted is 0x564fb2801470
epoll wait get 0xb2801470 0xb2801470
交叉编译问题,我链接了错误的arch版本*.so。(arm64而不是arm)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.