多重IO処理の為にepollも実装しましたが、JNAで union epoll_data_tが上手くマッピングされません。
Unionは以下の用に宣言しています。
class epoll_data extends Union{
public Pointer ptr;
public int fd;
public int u32;
public long u64;
}
class epoll_event extends Structure{
public int events;
public epoll_data = new epoll_data();
}
epoll_eventのサイズが正しく12バイトになるようにgetNativeAlignmenも実装しましたが、
epoll_data.u32 = 10;した後にepoll_ctlをするとu32が0に勝手にセットされてバグっています。
どうすれば、上手くUnion構造体をマッピングできるのでしょうか?
とりあえず、epoll_dataをlongとして扱うようにして、動かしていますが、気持ち悪いです。
コメント(0件)