Ocean
platform/android/Processor.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) Meta Platforms, Inc. and affiliates.
3
*
4
* This source code is licensed under the MIT license found in the
5
* LICENSE file in the root directory of this source tree.
6
*/
7
8
#ifndef META_OCEAN_PLATFORM_ANDROID_PROCESSOR_H
9
#define META_OCEAN_PLATFORM_ANDROID_PROCESSOR_H
10
11
#include "
ocean/platform/android/Android.h
"
12
13
namespace
Ocean
14
{
15
16
namespace
Platform
17
{
18
19
namespace
Android
20
{
21
22
/**
23
* This class implements processor functions.
24
* @ingroup platformandroid
25
*/
26
class
OCEAN_PLATFORM_ANDROID_EXPORT
Processor
27
{
28
public
:
29
30
/**
31
* Definition of a processor operation frequency.
32
*/
33
typedef
unsigned
int
Frequency
;
34
35
public
:
36
37
/**
38
* Returns an invalid frequency.
39
*/
40
static
constexpr
Frequency
invalidFrequency();
41
42
/**
43
* Returns the number of installed CPU cores.
44
* @return Number of installed CPU cores, 0 if the number could not be determined
45
*/
46
static
unsigned
int
installedCores
();
47
48
/**
49
* Returns the current operation frequency of a specified core.
50
* @param core The core to return the current frequency for
51
* @return Frequency in kHz otherwise invalidFrequency
52
*/
53
static
Frequency
currentFrequency
(
const
unsigned
int
core = 0u);
54
55
/**
56
* Returns the maximal operation frequency of a specified core.
57
* @param core The core to return the maximal frequency for
58
* @return Frequency in kHz otherwise invalidFrequency
59
*/
60
static
Frequency
maxFrequency
(
const
unsigned
int
core = 0u);
61
62
/**
63
* Returns the minimal operation frequency of a specified core.
64
* @param core The core to return the minimal frequency for
65
* @return Frequency in kHz otherwise invalidFrequency
66
*/
67
static
Frequency
minFrequency
(
const
unsigned
int
core = 0u);
68
69
/**
70
* Returns the CPU affinity of the current thread.
71
* The affinity defines on which CPU cores the thread is allowed to run.
72
* @param cpuMask The affinity mask, each bit is associated with the corresponding CPU
73
* @return True, if succeeded
74
*/
75
static
bool
currentThreadAffinity
(uint32_t& cpuMask);
76
77
/**
78
* Sets the CPU affinity of the current thread.
79
* The affinity defines on which CPU cores the thread is allowed to run.<br>
80
* Beware: Depending on the Android device, setting CPU affinity may not be allowed, or may be restricted to a subset of all cores.
81
* @param cpuMask The affinity mask, each bit is associated with the corresponding CPU
82
* @return True, if succeeded
83
*/
84
static
bool
setCurrentThreadAffinity
(
const
uint32_t cpuMask);
85
86
/**
87
* Sets the CPU affinity of the current thread.
88
* The affinity defines on which CPU cores the thread is allowed to run.<br>
89
* This function allows to specify a range of CPUs (not a mask).
90
* Beware: Depending on the Android device, setting CPU affinity may not be allowed, or may be restricted to a subset of all cores.
91
* @param firstCPU The index of the first CPU to set, with range [0, 31]
92
* @param lastCPU The index of the last (including) CPU to set, with range [firstCPU, 31]
93
* @return True, if succeeded
94
*/
95
static
bool
setCurrentThreadAffinity
(
const
unsigned
int
firstCPU,
const
unsigned
int
lastCPU);
96
};
97
98
constexpr
Processor::Frequency
Processor::invalidFrequency
()
99
{
100
return
Frequency
(-1);
101
}
102
103
}
104
105
}
106
107
}
108
109
#endif
// META_OCEAN_PLATFORM_ANDROID_PROCESSOR_H
Ocean::Platform::Android::Processor
This class implements processor functions.
Definition:
platform/android/Processor.h:27
Ocean::Platform::Android::Processor::setCurrentThreadAffinity
static bool setCurrentThreadAffinity(const uint32_t cpuMask)
Sets the CPU affinity of the current thread.
Ocean::Platform::Android::Processor::currentThreadAffinity
static bool currentThreadAffinity(uint32_t &cpuMask)
Returns the CPU affinity of the current thread.
Ocean::Platform::Android::Processor::minFrequency
static Frequency minFrequency(const unsigned int core=0u)
Returns the minimal operation frequency of a specified core.
Ocean::Platform::Android::Processor::Frequency
unsigned int Frequency
Definition of a processor operation frequency.
Definition:
platform/android/Processor.h:33
Ocean::Platform::Android::Processor::invalidFrequency
static constexpr Frequency invalidFrequency()
Returns an invalid frequency.
Definition:
platform/android/Processor.h:98
Ocean::Platform::Android::Processor::maxFrequency
static Frequency maxFrequency(const unsigned int core=0u)
Returns the maximal operation frequency of a specified core.
Ocean::Platform::Android::Processor::setCurrentThreadAffinity
static bool setCurrentThreadAffinity(const unsigned int firstCPU, const unsigned int lastCPU)
Sets the CPU affinity of the current thread.
Ocean::Platform::Android::Processor::currentFrequency
static Frequency currentFrequency(const unsigned int core=0u)
Returns the current operation frequency of a specified core.
Ocean::Platform::Android::Processor::installedCores
static unsigned int installedCores()
Returns the number of installed CPU cores.
Ocean
The namespace covering the entire Ocean framework.
Definition:
Accessor.h:15
Android.h
impl
ocean
platform
android
Processor.h
Generated on Wed Nov 13 2024 18:48:18 for Ocean by
1.9.1