| //===--------------------- 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/event.h> |
| #include <sys/time.h> |
| #include <sys/types.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_ |