mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 10:00:16 +02:00
PrctlUtils: Move to include folder
We can group more prctl value handling in here.
This commit is contained in:
1 parent
5f8cb0dc54
commit
137aa59254
6 files changed
+63
-72
No files matched your search
@@ -1,13 +1,14 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#include "FEXCore/IR/IR.h"
|
||||
#include "FEXCore/Utils/AllocatorHooks.h"
|
||||
#include "Utils/PrctlUtils.h"
|
||||
#include "Interface/Context/Context.h"
|
||||
#include "Interface/Core/CPUBackend.h"
|
||||
#include "Interface/Core/LookupCache.h"
|
||||
#include "Interface/Core/Dispatcher/Dispatcher.h"
|
||||
#include <cstdint>
|
||||
|
||||
#include "LookupCache.h"
|
||||
#include <FEXCore/IR/IR.h>
|
||||
#include <FEXCore/Utils/AllocatorHooks.h>
|
||||
#include <FEXCore/Utils/PrctlUtils.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <linux/prctl.h>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#include "Utils/Allocator/HostAllocator.h"
|
||||
#include "Utils/PrctlUtils.h"
|
||||
#include <FEXCore/Utils/Allocator.h>
|
||||
#include <FEXCore/Utils/CompilerDefs.h>
|
||||
#include <FEXCore/Utils/LogManager.h>
|
||||
#include <FEXCore/Utils/MathUtils.h>
|
||||
#include <FEXCore/Utils/PrctlUtils.h>
|
||||
#include <FEXCore/Utils/TypeDefines.h>
|
||||
#include <FEXCore/fextl/fmt.h>
|
||||
#include <FEXCore/fextl/memory.h>
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#pragma once
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <linux/prctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/user.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
#ifndef PR_SET_VMA
|
||||
#define PR_SET_VMA 0x53564d41
|
||||
#endif
|
||||
|
||||
#ifndef PR_SET_VMA_ANON_NAME
|
||||
#define PR_SET_VMA_ANON_NAME 0
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,54 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
#pragma once
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <linux/prctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/user.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
#ifndef PR_SET_VMA
|
||||
#define PR_SET_VMA 0x53564d41
|
||||
#endif
|
||||
|
||||
#ifndef PR_SET_VMA_ANON_NAME
|
||||
#define PR_SET_VMA_ANON_NAME 0
|
||||
#endif
|
||||
|
||||
#ifndef PR_GET_MEM_MODEL
|
||||
#define PR_GET_MEM_MODEL 0x6d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL
|
||||
#define PR_SET_MEM_MODEL 0x4d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_DEFAULT
|
||||
#define PR_SET_MEM_MODEL_DEFAULT 0
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_TSO
|
||||
#define PR_SET_MEM_MODEL_TSO 1
|
||||
#endif
|
||||
|
||||
#ifndef PR_GET_COMPAT_INPUT
|
||||
#define PR_GET_COMPAT_INPUT 0x63494e50
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT
|
||||
#define PR_SET_COMPAT_INPUT 0x43494e50
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT_DISABLE
|
||||
#define PR_SET_COMPAT_INPUT_DISABLE 0
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT_ENABLE
|
||||
#define PR_SET_COMPAT_INPUT_ENABLE 1
|
||||
#endif
|
||||
|
||||
#ifndef PR_GET_SHADOW_STACK_STATUS
|
||||
#define PR_GET_SHADOW_STACK_STATUS 74
|
||||
#endif
|
||||
#ifndef PR_LOCK_SHADOW_STACK_STATUS
|
||||
#define PR_LOCK_SHADOW_STACK_STATUS 76
|
||||
#endif
|
||||
#ifndef PR_SHADOW_STACK_ENABLE
|
||||
#define PR_SHADOW_STACK_ENABLE (1ULL << 0)
|
||||
#endif
|
||||
|
||||
#endif // ifndef _WIN32
|
||||
@@ -2,9 +2,9 @@
|
||||
#include "Common/cpp-optparse/OptionParser.h"
|
||||
#include "Common/Config.h"
|
||||
#include "Common/FEXServerClient.h"
|
||||
#include "FEXHeaderUtils/Filesystem.h"
|
||||
#include "git_version.h"
|
||||
#include <FEXCore/Config/Config.h>
|
||||
#include <FEXCore/Utils/PrctlUtils.h>
|
||||
#include <FEXCore/fextl/fmt.h>
|
||||
#include <FEXCore/fextl/string.h>
|
||||
#include <FEXHeaderUtils/Filesystem.h>
|
||||
@@ -23,19 +23,6 @@ struct TSOEmulationFacts {
|
||||
|
||||
#ifdef _M_ARM_64
|
||||
bool CheckForHardwareTSO() {
|
||||
// We need to check if these are defined or not. This is a very fresh feature.
|
||||
#ifndef PR_GET_MEM_MODEL
|
||||
#define PR_GET_MEM_MODEL 0x6d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL
|
||||
#define PR_SET_MEM_MODEL 0x4d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_DEFAULT
|
||||
#define PR_SET_MEM_MODEL_DEFAULT 0
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_TSO
|
||||
#define PR_SET_MEM_MODEL_TSO 1
|
||||
#endif
|
||||
// Check to see if this is supported.
|
||||
auto Result = prctl(PR_GET_MEM_MODEL, 0, 0, 0, 0);
|
||||
if (Result == -1) {
|
||||
|
||||
@@ -31,6 +31,7 @@ $end_info$
|
||||
#include <FEXCore/Utils/LogManager.h>
|
||||
#include <FEXCore/Utils/Telemetry.h>
|
||||
#include <FEXCore/Utils/Threads.h>
|
||||
#include <FEXCore/Utils/PrctlUtils.h>
|
||||
#include <FEXCore/Utils/Profiler.h>
|
||||
#include <FEXCore/fextl/fmt.h>
|
||||
#include <FEXCore/fextl/memory.h>
|
||||
@@ -160,19 +161,6 @@ bool QueryInterpreterInstalled(bool ExecutedWithFD, const FEX::Config::PortableI
|
||||
|
||||
namespace FEX::TSO {
|
||||
void SetupTSOEmulation(FEXCore::Context::Context* CTX) {
|
||||
// We need to check if these are defined or not. This is a very fresh feature.
|
||||
#ifndef PR_GET_MEM_MODEL
|
||||
#define PR_GET_MEM_MODEL 0x6d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL
|
||||
#define PR_SET_MEM_MODEL 0x4d4d444c
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_DEFAULT
|
||||
#define PR_SET_MEM_MODEL_DEFAULT 0
|
||||
#endif
|
||||
#ifndef PR_SET_MEM_MODEL_TSO
|
||||
#define PR_SET_MEM_MODEL_TSO 1
|
||||
#endif
|
||||
// Check to see if this is supported.
|
||||
auto Result = prctl(PR_GET_MEM_MODEL, 0, 0, 0, 0);
|
||||
if (Result == -1) {
|
||||
@@ -201,19 +189,6 @@ void SetupTSOEmulation(FEXCore::Context::Context* CTX) {
|
||||
|
||||
namespace FEX::CompatInput {
|
||||
void SetupCompatInput(bool enable) {
|
||||
// We need to check if these are defined or not. This is a very fresh feature.
|
||||
#ifndef PR_GET_COMPAT_INPUT
|
||||
#define PR_GET_COMPAT_INPUT 0x63494e50
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT
|
||||
#define PR_SET_COMPAT_INPUT 0x43494e50
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT_DISABLE
|
||||
#define PR_SET_COMPAT_INPUT_DISABLE 0
|
||||
#endif
|
||||
#ifndef PR_SET_COMPAT_INPUT_ENABLE
|
||||
#define PR_SET_COMPAT_INPUT_ENABLE 1
|
||||
#endif
|
||||
// Check to see if this is supported.
|
||||
auto Result = prctl(PR_GET_COMPAT_INPUT, 0, 0, 0, 0);
|
||||
if (Result == -1) {
|
||||
@@ -231,15 +206,6 @@ void SetupCompatInput(bool enable) {
|
||||
|
||||
namespace FEX::GCS {
|
||||
void CheckForGCS() {
|
||||
#ifndef PR_GET_SHADOW_STACK_STATUS
|
||||
#define PR_GET_SHADOW_STACK_STATUS 74
|
||||
#endif
|
||||
#ifndef PR_LOCK_SHADOW_STACK_STATUS
|
||||
#define PR_LOCK_SHADOW_STACK_STATUS 76
|
||||
#endif
|
||||
#ifndef PR_SHADOW_STACK_ENABLE
|
||||
#define PR_SHADOW_STACK_ENABLE (1ULL << 0)
|
||||
#endif
|
||||
uint64_t ShadowStackWord {};
|
||||
if (prctl(PR_GET_SHADOW_STACK_STATUS, &ShadowStackWord, 0, 0, 0) == -1) {
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user