Due to failures in MinGW builds I adjusted the preprocessor directives to be more specific about when to include but kept the old definition in files that were committed more recently on accident. This patch changes those definitions to match the fixed ones. Also fix a typo leftover from the original change in PerfHelper.h.
69 lines
2.3 KiB
C++
69 lines
2.3 KiB
C++
//===-- SubprocessMemory.h --------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
/// Defines a class that automatically handles auxiliary memory and the
|
|
/// underlying shared memory backings for memory definitions
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_EXEGESIS_SUBPROCESSMEMORY_H
|
|
#define LLVM_TOOLS_LLVM_EXEGESIS_SUBPROCESSMEMORY_H
|
|
|
|
#include "BenchmarkResult.h"
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
#ifdef _MSC_VER
|
|
typedef int pid_t;
|
|
#else
|
|
#include <sys/types.h>
|
|
#endif // _MSC_VER
|
|
|
|
|
|
namespace llvm {
|
|
namespace exegesis {
|
|
|
|
class SubprocessMemory {
|
|
public:
|
|
static constexpr const size_t AuxiliaryMemoryOffset = 1;
|
|
static constexpr const size_t AuxiliaryMemorySize = 4096;
|
|
|
|
Error initializeSubprocessMemory(pid_t ProcessID);
|
|
|
|
// The following function sets up memory definitions. It creates shared
|
|
// memory objects for the definitions and fills them with the specified
|
|
// values. Arguments: MemoryDefinitions - A map from memory value names to
|
|
// MemoryValues, ProcessID - The ID of the current process.
|
|
Error addMemoryDefinition(
|
|
std::unordered_map<std::string, MemoryValue> MemoryDefinitions,
|
|
pid_t ProcessID);
|
|
|
|
// The following function sets up the auxiliary memory by opening shared
|
|
// memory objects backing memory definitions and putting file descriptors
|
|
// into appropriate places. Arguments: MemoryDefinitions - A map from memory
|
|
// values names to Memoryvalues, ParentPID - The ID of the process that
|
|
// setup the memory definitions, CounterFileDescriptor - The file descriptor
|
|
// for the performance counter that will be placed in the auxiliary memory
|
|
// section.
|
|
static Expected<int> setupAuxiliaryMemoryInSubprocess(
|
|
std::unordered_map<std::string, MemoryValue> MemoryDefinitions,
|
|
pid_t ParentPID, int CounterFileDescriptor);
|
|
|
|
~SubprocessMemory();
|
|
|
|
private:
|
|
std::vector<std::string> SharedMemoryNames;
|
|
};
|
|
|
|
} // namespace exegesis
|
|
} // namespace llvm
|
|
|
|
#endif
|