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/types.h>
|
|
|
|
#include <sys/event.h>
|
|
|
|
#include <sys/time.h>
|
|
|
|
|
2013-04-19 04:58:20 +08:00
|
|
|
#include "lldb/lldb-defines.h"
|
2013-02-17 06:46:58 +08:00
|
|
|
|
|
|
|
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_
|