2013-02-17 06:46:58 +08:00
|
|
|
//===--------------------- 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>
|
2016-09-07 04:57:50 +08:00
|
|
|
#include <sys/types.h>
|
2013-02-17 06:46:58 +08:00
|
|
|
|
2013-04-19 04:58:20 +08:00
|
|
|
#include "lldb/lldb-defines.h"
|
2013-02-17 06:46:58 +08:00
|
|
|
|
|
|
|
namespace lldb_private {
|
|
|
|
|
2016-09-07 04:57:50 +08:00
|
|
|
class KQueue {
|
2013-02-17 06:46:58 +08:00
|
|
|
public:
|
2016-09-07 04:57:50 +08:00
|
|
|
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
|
2013-02-17 06:46:58 +08:00
|
|
|
|
|
|
|
protected:
|
2016-09-07 04:57:50 +08:00
|
|
|
int m_fd; // The kqueue fd
|
2013-02-17 06:46:58 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace lldb_private
|
|
|
|
|
|
|
|
#endif // #ifdef LLDB_USE_KQUEUES
|
|
|
|
|
|
|
|
#endif // #ifndef utility_KQueue_h_
|