//===--------------------- KQueue.h -----------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef utility_KQueue_h_ #define utility_KQueue_h_ #if defined(__APPLE__) #define LLDB_USE_KQUEUES #endif #ifdef LLDB_USE_KQUEUES #include <sys/types.h> #include <sys/event.h> #include <sys/time.h> #include "lldb/lldb-defines.h" namespace lldb_private { class KQueue { public: KQueue() : m_fd(-1) { } ~KQueue() { Close(); } bool IsValid () const { return m_fd >= 0; } int GetFD (bool can_create); int Close (); bool AddFDEvent (int fd, bool read, bool write, bool vnode); int WaitForEvents (struct kevent *events, int num_events, Error &error, uint32_t timeout_usec = UINT32_MAX); // UINT32_MAX means infinite timeout protected: int m_fd; // The kqueue fd }; } // namespace lldb_private #endif // #ifdef LLDB_USE_KQUEUES #endif // #ifndef utility_KQueue_h_