blob: 98546aaaaa92defe09585e1801242709260f686d [file] [log] [blame]
/* -*- Mode: C++; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#ifndef RR_SYS_CPU_MONITOR_H_
#define RR_SYS_CPU_MONITOR_H_
#include "FileMonitor.h"
#include "TaskishUid.h"
namespace rr {
/**
* A FileMonitor to intercept /sys/devices/system/cpu/online (and potentially
* other files in that directory in the future) in order to pretend to the
* tracee that it only has the CPUs that rr is willing to give it
*/
class SysCpuMonitor : public FileMonitor {
public:
SysCpuMonitor(Task* t, const std::string& pathname);
virtual Type type() override { return SysCpu; }
bool emulate_read(RecordTask* t, const std::vector<Range>& ranges,
LazyOffset&, uint64_t* result) override;
};
} // namespace rr
#endif /* RR_SYS_CPU_MONITOR_H_ */