2

kqueue で EV_DISABLE と EV_ENABLE の使用例を理解しようとしています。

int KQueue = kqueue();

struct kevent ev = {
  .ident = fd,
  .filter = EVFILT_READ,
  .flags = EV_ADD | EV_DISABLE,
  .udata = somePtr
};

kevent(KQueue, &ev, 1, NULL, 0, NULL);

...

struct kevent ev = {
  .ident = fd,
  .filter = EVFILT_READ,
  .flags = EV_ENABLE
};

kevent(KQueue, &ev, 1, &ev, 1, NULL);

現在、 への最後の呼び出しがkevent()戻ると、ev.udata代わりNULLsomePtr. kevent()イベントを有効にするだけでなく、EV_ADD が設定されていなくてもポインターを更新する場合udata、無効なイベントを追加できるようにする理由は何ですか?

4

2 に答える 2