You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*
* IXSelectInterruptPipe.h * Author: Benjamin Sergeant * Copyright (c) 2018-2019 Machine Zone, Inc. All rights reserved. */
#pragma once
#include "IXSelectInterrupt.h"
#include <mutex>
#include <stdint.h>
#include <string>
namespace ix { class SelectInterruptPipe final : public SelectInterrupt { public: SelectInterruptPipe(); virtual ~SelectInterruptPipe();
bool init(std::string& errorMsg) final;
bool notify(uint64_t value) final; bool clear() final; uint64_t read() final; int getFd() const final;
private: // Store file descriptors used by the communication pipe. Communication
// happens between a control thread and a background thread, which is
// blocked on select.
int _fildes[2]; mutable std::mutex _fildesMutex;
// Used to identify the read/write idx
static const int kPipeReadIndex; static const int kPipeWriteIndex; }; } // namespace ix
|