UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GenericPlatformProcess.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "CoreTypes.h"
9#include "HAL/PlatformCrt.h"
10#include "HAL/PlatformMisc.h"
11#include "Misc/EnumClassFlags.h"
12#include "Templates/Function.h"
13#include "Templates/Tuple.h"
15
16class FEvent;
17
19#if PLATFORM_CPU_X86_FAMILY
20#include <immintrin.h>
21#endif
22
24#if PLATFORM_APPLE
25#include <mach/mach_time.h>
26#endif
27
29#if !defined(__clang__)
30# include <intrin.h>
31# if defined(_M_ARM)
32# include <armintr.h>
33# elif PLATFORM_WINDOWS && PLATFORM_CPU_ARM_FAMILY
34# include <arm64intr.h>
35# endif
36#endif
37
38// Assume ThreadRipper is the max number of cores we can have
39#if PLATFORM_DESKTOP
40#define MAX_NUM_PROCESSORS 128
41#else
42#define MAX_NUM_PROCESSORS 16
43#endif
44
45
46class Error;
47struct FProcHandle;
48template <typename FuncType> class TFunctionRef;
49
51{
52 enum Type
53 {
59 };
60}
61
62
64namespace ELaunchVerb
65{
66 enum Type
67 {
70
73 };
74}
75
77namespace ENamedThreads
78{
79 enum Type : int32;
80}
81
82namespace UE::Core
83{
84 class FURLRequestFilter;
85}
86
88template< typename T, T InvalidHandleValue >
90{
91 typedef T HandleType;
92public:
93
98
101 : Handle( Other )
102 { }
103
106 {
107 return Handle;
108 }
109
114
116 {
117 return Handle != InvalidHandleValue;
118 }
119
120protected:
123};
124
125
126struct FProcHandle;
127
143
144// Only used on Unix-like (Linux, Unix, Android) platforms because you have to scrape /proc/stat
173
174namespace UE::HAL
175{
177 {
178 void* Value = nullptr;
179
180 operator void*() const
181 {
182 return Value;
183 }
184 };
185
187 {
188 void* Value = nullptr;
189
190 operator void*() const
191 {
192 return Value;
193 }
194 };
195
209
210 enum struct EProcessId: uint32 {};
211}
212
213
223{
224public:
226 static bool CORE_API DoesSentinelFileExist(const TCHAR* Name, FString* OptionalOutContents=nullptr);
227
232 virtual bool CreateSentinelFile(const TCHAR* Name, const FString& Contents) = 0;
233
234protected:
236 virtual FString CORE_API MakeFilename(const TCHAR* Name);
237
242 virtual bool DoesSentinelFileExistImpl(const TCHAR* Name, FString* OptionalOutContents=nullptr) = 0;
243};
244
249{
254 {
256 const TCHAR* GetName() const
257 {
258 return Name;
259 }
260
262 virtual void Lock() = 0;
263
271
273 virtual void Unlock() = 0;
274
280 FSemaphore(const FString& InName);
281
287 FSemaphore(const TCHAR* InName);
288
290 virtual ~FSemaphore() { };
291
292 protected:
293
295 {
296 MaxSemaphoreName = 128
297 };
298
301 };
302
304 static CORE_API void* GetDllHandle( const TCHAR* Filename );
305
307 static CORE_API void FreeDllHandle( void* DllHandle );
308
310 static CORE_API void* GetDllExport( void* DllHandle, const TCHAR* ProcName );
311
313 UE_FORCEINLINE_HINT static void AddDllDirectory(const TCHAR* Directory)
314 {
315
316 }
317
319 UE_FORCEINLINE_HINT static void PushDllDirectory(const TCHAR* Directory)
320 {
321
322 }
323
325 UE_FORCEINLINE_HINT static void PopDllDirectory(const TCHAR* Directory)
326 {
327
328 }
329
335
342
349
355 static bool GetPerFrameProcessorUsage(uint32 ProcessId, float& ProcessUsageFraction, float& IdleUsageFraction) {return false;}
356
363
370
375 static void SetThreadName( const TCHAR* ThreadName ) { }
376
379
381 static void DumpThreadInfo( const TCHAR* MarkerName ) { }
382
384 static void SetupGameThread() { }
385
387 static void SetupRenderThread() { }
388
390 static void SetupAudioThread() { }
391
393 static void TeardownAudioThread() { }
394
396 static CORE_API bool ShouldSaveToUserDir();
397
399 static CORE_API const TCHAR* BaseDir();
400
402 static CORE_API const TCHAR* UserDir();
403
405 static CORE_API const TCHAR *UserSettingsDir();
406
408 static CORE_API const TCHAR *UserTempDir();
409
411 static CORE_API const TCHAR *UserHomeDir();
412
424
426 static CORE_API const TCHAR* ApplicationSettingsDir();
427
435 static CORE_API FString GetApplicationSettingsDir(const ApplicationSettingsContext& Settings);
436
438 static CORE_API const TCHAR* ComputerName();
439
441 static CORE_API const TCHAR* UserName(bool bOnlyAlphaNumeric = true);
442 static CORE_API const TCHAR* ShaderDir();
443 static CORE_API void SetShaderDir(const TCHAR*Where);
445
447 static CORE_API FString GetCurrentWorkingDirectory();
448
456 static bool SetProcessLimits(EProcessResource::Type Resource, uint64 Limit)
457 {
458 return true; // return fake success by default, that way the game won't early quit on platforms that don't implement this
459 }
460
466 static CORE_API const FString ShaderWorkingDir();
467
469 static CORE_API void CleanShaderWorkingDir();
470
476 static CORE_API const TCHAR* ExecutablePath();
477
484 static CORE_API const TCHAR* ExecutableName(bool bRemoveExtension = true);
485
497 static CORE_API FString GenerateApplicationPath( const FString& AppName, EBuildConfiguration BuildConfiguration);
498
506 static CORE_API const TCHAR* GetArchitectureSuffix();
507
514 static CORE_API const TCHAR* GetModulePrefix();
515
522 static CORE_API const TCHAR* GetModuleExtension();
523
527 static CORE_API const TCHAR* GetBinariesSubdirectory();
528
535 static CORE_API const FString GetModulesDirectory();
536
542 static CORE_API bool ModuleExists(const FString& Filename);
543
550 static CORE_API void LaunchURL( const TCHAR* URL, const TCHAR* Parms, FString* Error );
551
562 static CORE_API bool LaunchURLFiltered(const TCHAR* URL, const TCHAR* Parms, FString* Error, const UE::Core::FURLRequestFilter& Filter);
563
567 static CORE_API bool CanLaunchURL(const TCHAR* URL);
568
574 static CORE_API FString GetGameBundleId();
575
591 static CORE_API FProcHandle CreateProc( const TCHAR* URL, const TCHAR* Parms, bool bLaunchDetached, bool bLaunchHidden, bool bLaunchReallyHidden, uint32* OutProcessID, int32 PriorityModifier, const TCHAR* OptionalWorkingDirectory, void* PipeWriteChild, void* PipeReadChild = nullptr);
592
609 static CORE_API FProcHandle CreateProc( const TCHAR* URL, const TCHAR* Parms, bool bLaunchDetached, bool bLaunchHidden, bool bLaunchReallyHidden, uint32* OutProcessID, int32 PriorityModifier, const TCHAR* OptionalWorkingDirectory, void* PipeWriteChild, void* PipeReadChild, void* PipeStdErrChild);
610
617
625
632 static CORE_API bool IsProcRunning( FProcHandle & ProcessHandle );
633
639 static CORE_API void WaitForProc( FProcHandle & ProcessHandle );
640
646 static CORE_API void CloseProc( FProcHandle & ProcessHandle );
647
653 static CORE_API void TerminateProc( FProcHandle & ProcessHandle, bool KillTree = false );
654
662 FProcHandle& ProcessHandle,
663 TFunctionRef<bool(uint32 ProcessId, const TCHAR* ApplicationName)> Predicate);
664
666 {
667 Error,
668 Parent,
669 Child
670 };
671
681
683 static CORE_API bool GetProcReturnCode( FProcHandle & ProcHandle, int32* ReturnCode );
684
686 static CORE_API bool IsApplicationRunning( uint32 ProcessId );
687
689 static CORE_API bool IsApplicationRunning( const TCHAR* ProcName );
690
692 static CORE_API FString GetApplicationName( uint32 ProcessId );
693
696
706 static CORE_API bool ExecProcess(const TCHAR* URL, const TCHAR* Params, int32* OutReturnCode, FString* OutStdOut, FString* OutStdErr, const TCHAR* OptionalWorkingDirectory = NULL, bool bShouldEndWithParentProcess = false);
707
712 static CORE_API bool ExecElevatedProcess(const TCHAR* URL, const TCHAR* Params, int32* OutReturnCode);
713
724 static CORE_API bool LaunchFileInDefaultExternalApplication( const TCHAR* FileName, const TCHAR* Parms = NULL, ELaunchVerb::Type Verb = ELaunchVerb::Open, bool bPromptToOpenOnFailure = true );
725
731 static CORE_API void ExploreFolder( const TCHAR* FilePath );
732
733#if PLATFORM_HAS_BSD_TIME
734
736 static CORE_API void Sleep( float Seconds );
738 static CORE_API void SleepNoStats( float Seconds );
740 [[noreturn]] static CORE_API void SleepInfinite();
742 static CORE_API void YieldThread();
743
744#endif // PLATFORM_HAS_BSD_TIME
745
752 static CORE_API void ConditionalSleep(TFunctionRef<bool()> Condition, float SleepTime = 0.0f);
753
761 // Message to others in the future, don't try to delete this function as it isn't exactly deprecated, but it should only ever be called from TEventPool::GetEventFromPool()
762 UE_DEPRECATED(5.0, "Please use GetSynchEventFromPool to create a new event, and ReturnSynchEventToPool to release the event.")
763 static CORE_API class FEvent* CreateSynchEvent(bool bIsManualReset = false);
764
772 static CORE_API class FEvent* GetSynchEventFromPool(bool bIsManualReset = false);
773
778
786
793
801 static CORE_API void ClosePipe( void* ReadPipe, void* WritePipe );
802
815 static CORE_API bool CreatePipe(void*& ReadPipe, void*& WritePipe, bool bWritePipeLocal = false);
816
824 static CORE_API FString ReadPipe( void* ReadPipe );
825
835
845 static CORE_API bool WritePipe(void* WritePipe, const FString& Message, FString* OutWritten = nullptr);
846
857 static CORE_API bool WritePipe(void* WritePipe, const uint8* Data, const int32 DataLength, int32* OutDataLength = nullptr);
858
859
866
876
886
893
900
905
910
914 static CORE_API void TearDown();
915
919 static bool SkipWaitForStats() { return false; }
920
924 static bool TryGetMemoryUsage(FProcHandle& ProcessHandle, FPlatformProcessMemoryStats& OutStats) { return false; }
925
930
935
940
944 static CORE_API TSharedPtr<IProcessSentinel> CreateProcessSentinel(const TCHAR* Name, const FString& Contents);
945
950 static inline void Yield()
951 {
952#if PLATFORM_USE_SSE2_FOR_THREAD_YIELD
953 _mm_pause();
954#elif PLATFORM_CPU_ARM_FAMILY
955# if defined(_MSC_VER)
956 __isb(0);
957# else
958 __asm__ __volatile__("isb");
959# endif
960#else
961 // the platform with other architectures must override this to not have this function be called
963#endif
964 }
965
970 static inline void YieldCycles(uint64 Cycles)
971 {
972#if PLATFORM_CPU_X86_FAMILY
973 auto ReadCycleCounter = []()
974 {
975#if defined(_MSC_VER)
976 return __rdtsc();
977#elif PLATFORM_APPLE
978 return mach_absolute_time();
979#elif __has_builtin(__builtin_readcyclecounter)
981#else
982 // the platform with other architectures must override this to not have this function be called
984#endif
985 };
986
987 uint64 start = ReadCycleCounter();
988 //some 32bit implementations return 0 for __builtin_readcyclecounter just to be on the safe side we protect against this.
989 Cycles = start != 0 ? Cycles : 0;
990
991#if PLATFORM_WINDOWS
992 if (FPlatformMisc::HasTimedPauseCPUFeature())
993 {
995#if defined(_MSC_VER)
997#elif __has_builtin(__builtin_ia32_tpause)
999#else
1000# error Unsupported architecture!
1001#endif
1002 }
1003 else
1004#endif
1005 {
1006 do
1007 {
1008 Yield();
1009 } while ((ReadCycleCounter() - start) < Cycles);
1010 }
1011
1012#else
1013 // We can't read cycle counter from user mode on these platform
1014 for (uint64 i = 0; i < Cycles; i++)
1015 {
1016#if PLATFORM_CPU_ARM_FAMILY
1017# if defined(_MSC_VER)
1018 __yield();
1019# else
1021# endif
1022#else
1023# error "Not implemented on this platform"
1024#endif
1025 }
1026#endif
1027 }
1028};
#define NULL
Definition oodle2base.h:134
#define unimplemented()
Definition AssertionMacros.h:321
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EThreadPriority
Definition GenericPlatformAffinity.h:26
EBuildConfiguration
Definition GenericPlatformMisc.h:59
#define MAX_NUM_PROCESSORS
Definition GenericPlatformProcess.h:42
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Event.h:21
Definition PThreadSemaphore.h:15
Definition RunnableThread.h:20
Definition GenericPlatformProcess.h:223
virtual bool DoesSentinelFileExistImpl(const TCHAR *Name, FString *OptionalOutContents=nullptr)=0
static bool CORE_API DoesSentinelFileExist(const TCHAR *Name, FString *OptionalOutContents=nullptr)
Definition GenericPlatformProcess.cpp:43
virtual bool CreateSentinelFile(const TCHAR *Name, const FString &Contents)=0
virtual FString CORE_API MakeFilename(const TCHAR *Name)
Definition GenericPlatformProcess.cpp:48
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition SharedPointer.h:692
Definition URLRequestFilter.h:29
Definition GenericPlatformProcess.h:65
Type
Definition GenericPlatformProcess.h:67
@ Open
Definition GenericPlatformProcess.h:69
@ Edit
Definition GenericPlatformProcess.h:72
Definition TaskGraph.cpp:63
Type
Definition TaskGraphInterfaces.h:57
Definition GenericPlatformProcess.h:51
Type
Definition GenericPlatformProcess.h:53
@ VirtualMemory
Definition GenericPlatformProcess.h:58
Definition PlayInEditorLoadingScope.h:8
Definition AndroidPlatformManualResetEvent.cpp:14
EProcessId
Definition GenericPlatformProcess.h:210
Definition GenericPlatformProcess.h:146
@ false
Definition radaudio_common.h:23
Definition GenericPlatformProcess.h:414
bool bIsEpic
Definition GenericPlatformProcess.h:422
Context
Definition GenericPlatformProcess.h:416
Context Location
Definition GenericPlatformProcess.h:421
Definition GenericPlatformProcess.h:254
TCHAR Name[MaxSemaphoreName]
Definition GenericPlatformProcess.h:300
virtual ~FSemaphore()
Definition GenericPlatformProcess.h:290
Limits
Definition GenericPlatformProcess.h:295
@ MaxSemaphoreName
Definition GenericPlatformProcess.h:296
virtual bool TryLock(uint64 NanosecondsToWait)=0
const TCHAR * GetName() const
Definition GenericPlatformProcess.h:256
Definition GenericPlatformProcess.h:249
static CORE_API void ClosePipe(void *ReadPipe, void *WritePipe)
Definition GenericPlatformProcess.cpp:621
static CORE_API ENamedThreads::Type GetDesiredThreadForUObjectReferenceCollector()
Definition GenericPlatformProcess.cpp:732
static CORE_API void * GetDllExport(void *DllHandle, const TCHAR *ProcName)
Definition GenericPlatformProcess.cpp:65
static CORE_API bool ShouldSaveToUserDir()
Definition GenericPlatformProcess.cpp:98
static CORE_API bool ExecElevatedProcess(const TCHAR *URL, const TCHAR *Params, int32 *OutReturnCode)
Definition GenericPlatformProcess.cpp:387
static UE_FORCEINLINE_HINT void GetDllDirectories(TArray< FString > &OutDllDirectories)
Definition GenericPlatformProcess.h:331
static CORE_API bool LaunchFileInDefaultExternalApplication(const TCHAR *FileName, const TCHAR *Parms=NULL, ELaunchVerb::Type Verb=ELaunchVerb::Open, bool bPromptToOpenOnFailure=true)
Definition GenericPlatformProcess.cpp:392
static CORE_API class FEvent * CreateSynchEvent(bool bIsManualReset=false)
Definition GenericPlatformProcess.cpp:542
static CORE_API void CeaseBeingFirstInstance()
Definition GenericPlatformProcess.cpp:714
static CORE_API void FlushPoolSyncEvents()
Definition GenericPlatformProcess.cpp:583
static CORE_API const TCHAR * ExecutablePath()
Definition GenericPlatformProcess.cpp:211
static CORE_API bool IsApplicationRunning(uint32 ProcessId)
Definition GenericPlatformProcess.cpp:363
static CORE_API void SetCurrentWorkingDirectoryToBaseDir()
Definition GenericPlatformProcess.cpp:151
static CORE_API void SetThreadAffinityMask(uint64 AffinityMask)
Definition GenericPlatformProcess.cpp:83
static UE_FORCEINLINE_HINT void PushDllDirectory(const TCHAR *Directory)
Definition GenericPlatformProcess.h:319
static CORE_API TSharedPtr< IProcessSentinel > CreateProcessSentinelObject()
Definition GenericPlatformProcess.cpp:874
static CORE_API bool LaunchURLFiltered(const TCHAR *URL, const TCHAR *Parms, FString *Error, const UE::Core::FURLRequestFilter &Filter)
Definition GenericPlatformProcess.cpp:265
static CORE_API const TCHAR * ShaderDir()
Definition GenericPlatformProcess.cpp:169
static CORE_API const TCHAR * GetModulePrefix()
Definition GenericPlatformProcess.cpp:234
static CORE_API EWaitAndForkResult WaitAndFork()
Definition GenericPlatformProcess.cpp:345
static bool SetProcessLimits(EProcessResource::Type Resource, uint64 Limit)
Definition GenericPlatformProcess.h:456
static CORE_API FProcHandle OpenProcess(uint32 ProcessID)
Definition GenericPlatformProcess.cpp:311
static UE_FORCEINLINE_HINT void AddDllDirectory(const TCHAR *Directory)
Definition GenericPlatformProcess.h:313
static CORE_API void TerminateProcTreeWithPredicate(FProcHandle &ProcessHandle, TFunctionRef< bool(uint32 ProcessId, const TCHAR *ApplicationName)> Predicate)
Definition GenericPlatformProcess.cpp:338
static void SetupAudioThread()
Definition GenericPlatformProcess.h:390
static CORE_API bool SupportsMultithreading()
Definition GenericPlatformProcess.cpp:656
static CORE_API bool WritePipe(void *WritePipe, const FString &Message, FString *OutWritten=nullptr)
Definition GenericPlatformProcess.cpp:644
static CORE_API class FEvent * GetSynchEventFromPool(bool bIsManualReset=false)
Definition GenericPlatformProcess.cpp:576
static UE_FORCEINLINE_HINT void PopDllDirectory(const TCHAR *Directory)
Definition GenericPlatformProcess.h:325
static CORE_API void * GetDllHandle(const TCHAR *Filename)
Definition GenericPlatformProcess.cpp:54
static CORE_API const TCHAR * UserHomeDir()
Definition GenericPlatformProcess.cpp:122
static CORE_API FString GetApplicationSettingsDir(const ApplicationSettingsContext &Settings)
Definition GenericPlatformProcess.cpp:134
static CORE_API const TCHAR * GetArchitectureSuffix()
Definition GenericPlatformProcess.cpp:229
static CORE_API void CloseProc(FProcHandle &ProcessHandle)
Definition GenericPlatformProcess.cpp:328
static void YieldCycles(uint64 Cycles)
Definition GenericPlatformProcess.h:970
static CORE_API bool GetApplicationMemoryUsage(uint32 ProcessId, SIZE_T *OutMemoryUsage)
Definition GenericPlatformProcess.cpp:357
static CORE_API bool IsProcRunning(FProcHandle &ProcessHandle)
Definition GenericPlatformProcess.cpp:317
static void DumpThreadInfo(const TCHAR *MarkerName)
Definition GenericPlatformProcess.h:381
static CORE_API uint32 GetStackSize()
Definition GenericPlatformProcess.cpp:93
static CORE_API bool IsFirstInstance()
Definition GenericPlatformProcess.cpp:707
static void SetupRenderThread()
Definition GenericPlatformProcess.h:387
static CORE_API bool ExecProcess(const TCHAR *URL, const TCHAR *Params, int32 *OutReturnCode, FString *OutStdOut, FString *OutStdErr, const TCHAR *OptionalWorkingDirectory=NULL, bool bShouldEndWithParentProcess=false)
Definition GenericPlatformProcess.cpp:381
static CORE_API FString GetCurrentWorkingDirectory()
Definition GenericPlatformProcess.cpp:161
static bool TryGetMemoryUsage(FProcHandle &ProcessHandle, FPlatformProcessMemoryStats &OutStats)
Definition GenericPlatformProcess.h:924
static CORE_API FString GetApplicationName(uint32 ProcessId)
Definition GenericPlatformProcess.cpp:375
static CORE_API const TCHAR * UserDir()
Definition GenericPlatformProcess.cpp:104
static CORE_API const FString ShaderWorkingDir()
Definition GenericPlatformProcess.cpp:193
static CORE_API void TearDown()
Definition GenericPlatformProcess.cpp:726
static CORE_API void ReturnSynchEventToPool(FEvent *Event)
Definition GenericPlatformProcess.cpp:589
static CORE_API FSemaphore * NewInterprocessSynchObject(const FString &Name, bool bCreate, uint32 MaxLocks=1)
Definition GenericPlatformProcess.cpp:684
static CORE_API void SetThreadPriority(EThreadPriority NewPriority)
Definition GenericPlatformProcess.cpp:88
static CORE_API uint32 GetCurrentCoreNumber()
Definition GenericPlatformProcess.cpp:77
static CORE_API const TCHAR * GetBinariesSubdirectory()
Definition GenericPlatformProcess.cpp:245
static CORE_API const TCHAR * GetModuleExtension()
Definition GenericPlatformProcess.cpp:239
static CORE_API const TCHAR * ComputerName()
Definition GenericPlatformProcess.cpp:141
static CORE_API void LaunchURL(const TCHAR *URL, const TCHAR *Parms, FString *Error)
Definition GenericPlatformProcess.cpp:260
static CORE_API void WaitForProc(FProcHandle &ProcessHandle)
Definition GenericPlatformProcess.cpp:323
static CORE_API uint32 GetCurrentProcessId()
Definition GenericPlatformProcess.cpp:71
static CORE_API bool CreatePipe(void *&ReadPipe, void *&WritePipe, bool bWritePipeLocal=false)
Definition GenericPlatformProcess.cpp:626
static CORE_API bool Daemonize()
Definition GenericPlatformProcess.cpp:701
static CORE_API FString ReadPipe(void *ReadPipe)
Definition GenericPlatformProcess.cpp:632
static CORE_API bool ReadPipeToArray(void *ReadPipe, TArray< uint8 > &Output)
Definition GenericPlatformProcess.cpp:638
static CORE_API FString GenerateApplicationPath(const FString &AppName, EBuildConfiguration BuildConfiguration)
Definition GenericPlatformProcess.cpp:223
static CORE_API void ConditionalSleep(TFunctionRef< bool()> Condition, float SleepTime=0.0f)
Definition GenericPlatformProcess.cpp:443
static CORE_API void TerminateProc(FProcHandle &ProcessHandle, bool KillTree=false)
Definition GenericPlatformProcess.cpp:333
static CORE_API const TCHAR * UserTempDir()
Definition GenericPlatformProcess.cpp:116
static CORE_API bool CanLaunchURL(const TCHAR *URL)
Definition GenericPlatformProcess.cpp:281
static CORE_API bool ModuleExists(const FString &Filename)
Definition GenericPlatformProcess.cpp:255
static CORE_API void SetShaderDir(const TCHAR *Where)
Definition GenericPlatformProcess.cpp:178
static CORE_API void ExploreFolder(const TCHAR *FilePath)
Definition GenericPlatformProcess.cpp:398
static bool GetPerFrameProcessorUsage(uint32 ProcessId, float &ProcessUsageFraction, float &IdleUsageFraction)
Definition GenericPlatformProcess.h:355
static CORE_API bool GetProcReturnCode(FProcHandle &ProcHandle, int32 *ReturnCode)
Definition GenericPlatformProcess.cpp:351
static CORE_API const TCHAR * ApplicationSettingsDir()
Definition GenericPlatformProcess.cpp:128
static CORE_API FString GetGameBundleId()
Definition GenericPlatformProcess.cpp:287
static void SetThreadName(const TCHAR *ThreadName)
Definition GenericPlatformProcess.h:375
static CORE_API const TCHAR * BaseDir()
static void TeardownAudioThread()
Definition GenericPlatformProcess.h:393
static void SetupGameThread()
Definition GenericPlatformProcess.h:384
static CORE_API const TCHAR * UserName(bool bOnlyAlphaNumeric=true)
Definition GenericPlatformProcess.cpp:146
static CORE_API const TCHAR * ExecutableName(bool bRemoveExtension=true)
Definition GenericPlatformProcess.cpp:217
static CORE_API const TCHAR * UserSettingsDir()
Definition GenericPlatformProcess.cpp:110
static CORE_API FProcHandle CreateProc(const TCHAR *URL, const TCHAR *Parms, bool bLaunchDetached, bool bLaunchHidden, bool bLaunchReallyHidden, uint32 *OutProcessID, int32 PriorityModifier, const TCHAR *OptionalWorkingDirectory, void *PipeWriteChild, void *PipeReadChild=nullptr)
Definition GenericPlatformProcess.cpp:293
static CORE_API void ModifyThreadAssignmentForUObjectReferenceCollector(int32 &NumThreads, int32 &NumBackgroundThreads, ENamedThreads::Type &NormalThreadName, ENamedThreads::Type &BackgroundThreadName)
Definition GenericPlatformProcess.cpp:737
static void Yield()
Definition GenericPlatformProcess.h:950
static CORE_API const FString GetModulesDirectory()
Definition GenericPlatformProcess.cpp:250
EWaitAndForkResult
Definition GenericPlatformProcess.h:666
static CORE_API bool DeleteInterprocessSynchObject(FSemaphore *Object)
Definition GenericPlatformProcess.cpp:695
static CORE_API class FRunnableThread * CreateRunnableThread()
Definition GenericPlatformProcess.cpp:611
static CORE_API void FreeDllHandle(void *DllHandle)
Definition GenericPlatformProcess.cpp:60
static bool SkipWaitForStats()
Definition GenericPlatformProcess.h:919
static CORE_API TSharedPtr< IProcessSentinel > CreateProcessSentinel(const TCHAR *Name, const FString &Contents)
Definition GenericPlatformProcess.cpp:880
static CORE_API void CleanShaderWorkingDir()
Definition GenericPlatformProcess.cpp:201
Definition GenericPlatformProcess.h:130
uint64 UsedVirtual
Definition GenericPlatformProcess.h:138
uint64 PeakUsedVirtual
Definition GenericPlatformProcess.h:141
uint64 PeakUsedPhysical
Definition GenericPlatformProcess.h:135
uint64 UsedPhysical
Definition GenericPlatformProcess.h:132
Definition AndroidPlatformProcess.h:13
Definition GenericPlatformProcess.h:90
T HandleType
Definition GenericPlatformProcess.h:91
UE_FORCEINLINE_HINT constexpr TProcHandle()
Definition GenericPlatformProcess.h:95
UE_FORCEINLINE_HINT TProcHandle(T Other)
Definition GenericPlatformProcess.h:100
UE_FORCEINLINE_HINT T Get() const
Definition GenericPlatformProcess.h:105
UE_FORCEINLINE_HINT bool IsValid() const
Definition GenericPlatformProcess.h:115
T Handle
Definition GenericPlatformProcess.h:122
UE_FORCEINLINE_HINT void Reset()
Definition GenericPlatformProcess.h:110
Definition Tuple.h:652
Definition GenericPlatformProcess.h:197
bool bInheritHandles
Definition GenericPlatformProcess.h:204
FWriteHandle StdOut
Definition GenericPlatformProcess.h:206
bool bDetached
Definition GenericPlatformProcess.h:202
bool bHidden
Definition GenericPlatformProcess.h:203
const TCHAR * Arguments
Definition GenericPlatformProcess.h:199
int32 PriorityModifier
Definition GenericPlatformProcess.h:201
const TCHAR * WorkingDirectory
Definition GenericPlatformProcess.h:200
FReadHandle StdIn
Definition GenericPlatformProcess.h:205
FWriteHandle StdErr
Definition GenericPlatformProcess.h:207
const TCHAR * Uri
Definition GenericPlatformProcess.h:198
Definition GenericPlatformProcess.h:177
void * Value
Definition GenericPlatformProcess.h:178
Definition GenericPlatformProcess.h:187
void * Value
Definition GenericPlatformProcess.h:188
Definition GenericPlatformProcess.h:147
uint64_t TotalTime
Definition GenericPlatformProcess.h:148
uint64_t SoftIRQTime
Definition GenericPlatformProcess.h:152
uint64_t UserTime
Definition GenericPlatformProcess.h:149
uint64_t IOWaitTime
Definition GenericPlatformProcess.h:155
uint64_t IdleTime
Definition GenericPlatformProcess.h:154
uint64_t SystemTime
Definition GenericPlatformProcess.h:151
uint64_t IRQTime
Definition GenericPlatformProcess.h:153
uint64_t NiceTime
Definition GenericPlatformProcess.h:150
Definition GenericPlatformProcess.h:159
static constexpr int32 MaxSupportedCores
Definition GenericPlatformProcess.h:160
double Utilization[MaxSupportedCores]
Definition GenericPlatformProcess.h:167
double AverageIdleTime
Definition GenericPlatformProcess.h:170
FCPUStatTime PreviousUsage[MaxSupportedCores]
Definition GenericPlatformProcess.h:165
int32 ActivatedCoreCount
Definition GenericPlatformProcess.h:162
ANSICHAR Name[6]
Definition GenericPlatformProcess.h:163
int32 Status[MaxSupportedCores]
Definition GenericPlatformProcess.h:166
FCPUStatTime CurrentUsage[MaxSupportedCores]
Definition GenericPlatformProcess.h:164
int32 CoreCount
Definition GenericPlatformProcess.h:161
double AverageUtilization
Definition GenericPlatformProcess.h:169
double IdleTime[MaxSupportedCores]
Definition GenericPlatformProcess.h:168