16#define kSchedMinMicroTime (AffinityKind::kStandard)
17#define kSchedInvalidPID (-1)
18#define kSchedProcessLimitPerTeam (32U)
19#define kSchedTeamCount (256U)
21#define kSchedMaxMemoryLimit (gib_cast(128))
22#define kSchedMaxStackSz (kib_cast(8))
24#define kSchedNameLen (128U)
31class KernelTaskScheduler;
32class UserProcessScheduler;
36struct PROCESS_HEAP_TREE;
39struct PROCESS_SPECIAL_TREE;
42struct PROCESS_FILE_TREE;
53 static constexpr auto kHeap =
true;
54 static constexpr auto kFile =
false;
80 static constexpr auto kHeap =
false;
81 static constexpr auto kFile =
true;
111 static constexpr auto kHeap =
false;
112 static constexpr auto kFile =
false;
189 return lhs_int < rhs_int;
196 return lhs_int > rhs_int;
200 Int32 lhs_int =
static_cast<Int>(lhs);
203 return lhs_int <= rhs_int;
210 return lhs_int >= rhs_int;
EXTERN_C void sched_idle_task(void)
ErrorOr class for error handling.
Definition ErrorOr.h:22
UPS inline definitions.
Definition Device.h:12
bool operator>=(AffinityKind lhs, AffinityKind rhs)
Definition CoreProcessScheduler.h:206
UInt32 ProcessCtx
Definition CoreProcessScheduler.h:107
Int64 ProcessID
Local Process Identifier type.
Definition CoreProcessScheduler.h:219
__INT64_TYPE__ Int64
Definition Config.h:46
ProcessSubsystem
Subsystem enum type.
Definition CoreProcessScheduler.h:145
@ kProcessSubsystemUser
Definition CoreProcessScheduler.h:147
@ kProcessSubsystemSecurity
Definition CoreProcessScheduler.h:146
@ kProcessSubsystemKernel
Definition CoreProcessScheduler.h:150
@ kProcessSubsystemInvalid
Definition CoreProcessScheduler.h:152
@ kProcessSubsystemDriver
Definition CoreProcessScheduler.h:149
@ kProcessSubsystemService
Definition CoreProcessScheduler.h:148
@ kProcessSubsystemCount
Definition CoreProcessScheduler.h:151
__SIZE_TYPE__ SizeT
Definition Config.h:60
UInt64 PTime
Definition CoreProcessScheduler.h:213
bool operator<=(AffinityKind lhs, AffinityKind rhs)
Definition CoreProcessScheduler.h:199
ProcessLevelRing
Definition CoreProcessScheduler.h:224
@ kRingSuperUser
Definition CoreProcessScheduler.h:226
@ kRingStdUser
Definition CoreProcessScheduler.h:225
@ kRingCount
Definition CoreProcessScheduler.h:228
@ kRingGuestUser
Definition CoreProcessScheduler.h:227
PTime ProcessTime
Definition CoreProcessScheduler.h:214
__UINT32_TYPE__ UInt32
Definition Config.h:44
void * VoidPtr
Definition Config.h:33
ProcessStatusKind
Local Process status enum.
Definition CoreProcessScheduler.h:158
@ kStarting
Definition CoreProcessScheduler.h:160
@ kKilled
Definition CoreProcessScheduler.h:162
@ kFinished
Definition CoreProcessScheduler.h:164
@ kRunning
Definition CoreProcessScheduler.h:161
@ kCount
Definition CoreProcessScheduler.h:165
@ kFrozen
Definition CoreProcessScheduler.h:163
@ kInvalid
Definition CoreProcessScheduler.h:159
constexpr KPCError kErrorInvalidData
Definition KPC.h:56
__INT32_TYPE__ Int32
Definition Config.h:38
bool operator<(AffinityKind lhs, AffinityKind rhs)
Operators for AffinityKind.
Definition CoreProcessScheduler.h:185
AffinityKind
Affinity is the amount of nano-seconds this process is going to run.
Definition CoreProcessScheduler.h:171
@ kVeryLowUsage
Definition CoreProcessScheduler.h:178
@ kLowUsage
Definition CoreProcessScheduler.h:177
@ kStandard
Definition CoreProcessScheduler.h:176
@ kHigh
Definition CoreProcessScheduler.h:175
@ kVeryHigh
Definition CoreProcessScheduler.h:174
@ kRealTime
Definition CoreProcessScheduler.h:173
@ kTreeKindCount
Definition CoreProcessScheduler.h:48
@ kRedTreeKind
Definition CoreProcessScheduler.h:46
@ kBlackTreeKind
Definition CoreProcessScheduler.h:47
@ kInvalidTreeKind
Definition CoreProcessScheduler.h:45
int Int
Definition Config.h:37
VoidPtr ImagePtr
Helper type to describe a code image.
Definition CoreProcessScheduler.h:234
__UINT64_TYPE__ UInt64
Definition Config.h:48
bool operator>(AffinityKind lhs, AffinityKind rhs)
Definition CoreProcessScheduler.h:192
bool Bool
Definition Config.h:50
Definition CoreProcessScheduler.h:79
UInt32 Color
Definition CoreProcessScheduler.h:88
static constexpr auto kSpecial
Definition CoreProcessScheduler.h:82
static constexpr auto kHeap
Definition CoreProcessScheduler.h:80
struct PROCESS_FILE_TREE< T > * Parent
Definition CoreProcessScheduler.h:90
struct PROCESS_FILE_TREE< T > * Child
Definition CoreProcessScheduler.h:94
SizeT EntryPad
Definition CoreProcessScheduler.h:86
T Entry
Definition CoreProcessScheduler.h:84
static constexpr auto kFile
Definition CoreProcessScheduler.h:81
SizeT EntrySize
Definition CoreProcessScheduler.h:85
struct PROCESS_FILE_TREE< T > * Prev
Definition CoreProcessScheduler.h:98
struct PROCESS_FILE_TREE< T > * Next
Definition CoreProcessScheduler.h:102
Definition CoreProcessScheduler.h:52
T Entry
Definition CoreProcessScheduler.h:57
struct PROCESS_HEAP_TREE< T > * Next
Definition CoreProcessScheduler.h:73
static constexpr auto kHeap
Definition CoreProcessScheduler.h:53
struct PROCESS_HEAP_TREE< T > * Parent
Definition CoreProcessScheduler.h:63
static constexpr auto kSpecial
Definition CoreProcessScheduler.h:55
SizeT EntrySize
Definition CoreProcessScheduler.h:58
SizeT EntryPad
Definition CoreProcessScheduler.h:59
UInt32 Color
Definition CoreProcessScheduler.h:61
struct PROCESS_HEAP_TREE< T > * Prev
Definition CoreProcessScheduler.h:70
struct PROCESS_HEAP_TREE< T > * Child
Definition CoreProcessScheduler.h:66
static constexpr auto kFile
Definition CoreProcessScheduler.h:54
Definition CoreProcessScheduler.h:110
struct PROCESS_SPECIAL_TREE< T > * Prev
Definition CoreProcessScheduler.h:132
struct PROCESS_SPECIAL_TREE< T > * Next
Definition CoreProcessScheduler.h:136
static constexpr auto kFile
Definition CoreProcessScheduler.h:112
UInt32 Color
Definition CoreProcessScheduler.h:122
ProcessCtx EntryContext
a context is where the resource comes from.
Definition CoreProcessScheduler.h:120
T Entry
Definition CoreProcessScheduler.h:115
struct PROCESS_SPECIAL_TREE< T > * Child
Definition CoreProcessScheduler.h:128
SizeT EntryPad
Definition CoreProcessScheduler.h:117
struct PROCESS_SPECIAL_TREE< T > * Parent
Definition CoreProcessScheduler.h:124
static constexpr auto kSpecial
Definition CoreProcessScheduler.h:113
static constexpr auto kHeap
Definition CoreProcessScheduler.h:111
SizeT EntrySize
Definition CoreProcessScheduler.h:116
ImagePtr fBlob
Definition CoreProcessScheduler.h:250
friend UserProcessScheduler
Definition CoreProcessScheduler.h:246
ErrorOr< ImagePtr > LeakImage()
Definition CoreProcessScheduler.h:257
friend KernelTaskScheduler
Definition CoreProcessScheduler.h:247
friend USER_PROCESS
Definition CoreProcessScheduler.h:243
friend KERNEL_TASK
Definition CoreProcessScheduler.h:244
Bool HasCode() const
Definition CoreProcessScheduler.h:253
Bool HasImage() const
Definition CoreProcessScheduler.h:255
ImagePtr fCode
Definition CoreProcessScheduler.h:249
ErrorOr< ImagePtr > LeakBlob()
Definition CoreProcessScheduler.h:265