![](/img/trans.png)
[英]Can epoll_wait() > 1 with only 1 socket and 1 event — EPOLLIN?
[英]Why epoll_event only have 32bit pointer when getted from epoll_wait
我有 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);
}
但是當我使用 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;
標准輸出信息:
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.