簡體   English   中英

為什么從 epoll_wait 獲取 epoll_event 只有 32 位指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM