人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linux上のJavaの開発で、Unix Socket を使用したい為に、JNAでDirectMappingでlibcを読み込んで実装しました。
多重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として扱うようにして、動かしていますが、気持ち悪いです。



●質問者: ナス
●カテゴリ:コンピュータ
✍キーワード:Class FD Java Linux Structure
○ 状態 :キャンセル
└ 回答数 : 0/0件

回答がありません
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ