44 kDispatcherManualResetEvent = 0,
45 kDispatcherAutoResetEvent = 1,
46 kDispatcherMutant = 2,
48 kDispatcherSemaphore = 5,
49 kDispatcherThread = 6,
50 kDispatcherManualResetTimer = 8,
51 kDispatcherAutoResetTimer = 9,
58 kKThreadStateRunning = 2,
65constexpr u32 kXCreateSuspended = 0x00000001;
96 be_u32 wait_list_flink;
97 be_u32 wait_list_blink;
114REX_STATIC_ASSERT_SIZE(
XKQueue, 0x28);
125REX_STATIC_ASSERT_SIZE(
X_KTIMER, 0x28);
168 routine = guest_func;
174static_assert(offsetof(X_KDPC, inserted_number) == 0x2);
175static_assert(offsetof(X_KDPC, target_number) == 0x3);
176REX_STATIC_ASSERT_SIZE(X_KDPC, 0x1C);
202 be_u32 kernel_routine;
203 be_u32 rundown_routine;
209REX_STATIC_ASSERT_SIZE(
XAPC, 40);
219 u8 reserved_14[0x08];
221 u8 reserved_20[0x10];
228 "fiber register save area too small for PPCContext non-volatiles");
254 be_u32 interrupt_count;
260 be_u32 request_summary;
273 X_KDPC switch_thread_processor_dpc;
275REX_STATIC_ASSERT_SIZE(
X_KPRCB, 0x1A8);
329static_assert(offsetof(
X_KPCR, prcb_data) == 0x100);
330REX_STATIC_ASSERT_SIZE(
X_KPCR, 0x2D8);
414 be_u32 start_address;
420 be_u32 creation_flags;
435 be_u32 notification_routine;
443 be_u32 exception_flags;
445 be_u32 exception_address;
447 be_u32 exception_information[15];
459constexpr u32 kXProcTypeUser = 1;
460constexpr u32 kXProcTypeSystem = 2;
473 be_u32 tls_static_data_address;
Virtual memory flags and typed guest pointers.
Guest list and spin lock structures.
constexpr u32 kXTLSOutOfIndexes
Definition thread.h:67
constexpr u32 kXProcTypeIdle
Definition thread.h:458
X_DISPATCHER_FLAGS
Definition thread.h:43
IRQL_FLAGS
Definition thread.h:32
@ kIRQLDispatch
Definition thread.h:35
@ kIRQLAudio
Definition thread.h:37
@ kIRQLClock
Definition thread.h:38
@ kIRQLDPC
Definition thread.h:36
X_KTHREAD_STATE_FLAGS
Definition thread.h:55
@ kKThreadStateTerminated
Definition thread.h:60
@ kKThreadStateWaiting
Definition thread.h:61
@ kKThreadStateInitialized
Definition thread.h:56
@ kKThreadStateUnknown
Definition thread.h:62
@ kKThreadStateReady
Definition thread.h:57
@ kKThreadStateStandby
Definition thread.h:59
static constexpr size_t kNonVolatileSaveSize
Definition context.h:670
X_KSPINLOCK tls_lock
Definition thread.h:526
X_OBJECT_TYPE ExMutantObjectType
Definition thread.h:502
X_OBJECT_TYPE IoFileObjectType
Definition thread.h:512
X_OBJECT_TYPE ExThreadObjectType
Definition thread.h:498
X_OBJECT_TYPE ObDirectoryObjectType
Definition thread.h:514
X_KPROCESS system_process
Definition thread.h:523
X_OBJECT_TYPE ExEventObjectType
Definition thread.h:500
X_KPROCESS title_process
Definition thread.h:522
X_KPROCESS idle_process
Definition thread.h:520
X_OBJECT_TYPE ObSymbolicLinkObjectType
Definition thread.h:516
X_OBJECT_TYPE IoCompletionObjectType
Definition thread.h:508
X_OBJECT_TYPE ExTimerObjectType
Definition thread.h:506
X_OBJECT_TYPE ExSemaphoreObjectType
Definition thread.h:504
X_KSPINLOCK dispatcher_lock
Definition thread.h:524
be_u32 ecc_curves[15]
Definition thread.h:529
u8 UsbdBootEnumerationDoneEvent[0x10]
Definition thread.h:527
X_OBJECT_TYPE IoDeviceObjectType
Definition thread.h:510
X_UNKNOWN_TYPE_REFED self_list_object
Definition thread.h:518
X_KSPINLOCK ob_lock
Definition thread.h:525
be_u32 arg1
Definition thread.h:206
static constexpr u32 kDummyRundownRoutine
Definition thread.h:195
u8 apc_mode
Definition thread.h:198
be_u32 normal_context
Definition thread.h:205
X_LIST_ENTRY list_entry
Definition thread.h:201
u8 enqueued
Definition thread.h:199
static constexpr u32 kDummyKernelRoutine
Definition thread.h:193
be_u32 arg2
Definition thread.h:207
static constexpr u32 kSize
Definition thread.h:191
be_u32 normal_routine
Definition thread.h:204
u16 type
Definition thread.h:197
X_LIST_ENTRY entry_list_head
Definition thread.h:109
X_LIST_ENTRY thread_list_head
Definition thread.h:112
be_u32 current_count
Definition thread.h:110
be_u32 maximum_count
Definition thread.h:111
be_u32 exception_record
Definition thread.h:444
be_u32 number_parameters
Definition thread.h:446
X_LIST_ENTRY list_entry
Definition thread.h:437
be_u32 priority
Definition thread.h:436
be_u32 fiber_data
Definition thread.h:212
u8 register_save_area[0xA50 - 0x38]
Definition thread.h:224
be_u32 stack_limit
Definition thread.h:217
be_u32 stack_base
Definition thread.h:215
be_u32 stack_alloc_base
Definition thread.h:213
be_u64 sp_save
Definition thread.h:222
X_LIST_ENTRY list_entry
Definition thread.h:155
u8 target_number
Definition thread.h:154
u8 inserted_number
Definition thread.h:153
be_u32 arg1
Definition thread.h:158
be_u32 arg2
Definition thread.h:159
be_u16 type
Definition thread.h:152
void Initialize(u32 guest_func, u32 guest_context)
Definition thread.h:162
be_u32 context
Definition thread.h:157
u8 dispatch_software_interrupt
u8 apc_software_interrupt_state
be_u32 use_alternative_stack
Definition thread.h:316
be_u32 alt_stack_base_ptr
Definition thread.h:321
u8 background_scheduling_1b
Definition thread.h:303
be_u32 timer_related
Definition thread.h:304
u8 background_scheduling_1a
Definition thread.h:302
u8 background_scheduling_active
Definition thread.h:301
be_u16 unk_0a
Definition thread.h:289
u8 timer_pending
Definition thread.h:294
be_ptr< X_KPRCB > prcb
Definition thread.h:326
be_u32 interrupt_handlers[32]
Definition thread.h:323
u8 unk_20[0x10]
Definition thread.h:305
be_u32 msr_mask
Definition thread.h:281
be_u32 stack_base_ptr
Definition thread.h:318
be_u32 alt_stack_end_ptr
Definition thread.h:322
be_u64 pcr_ptr
Definition thread.h:307
u8 timeslice_ended
Definition thread.h:293
u8 processtype_value_in_dpc
Definition thread.h:291
be_u32 unk_stack_5c
Definition thread.h:314
u8 unk_0f
Definition thread.h:295
be_u32 stack_end_ptr
Definition thread.h:319
u8 unk_2ac[0x2C]
Definition thread.h:327
be_u32 thread_vmx_related
Definition thread.h:297
u8 unk_40[28]
Definition thread.h:313
be_u32 tls_ptr
Definition thread.h:279
u8 current_irql
Definition thread.h:299
be_u32 thread_fpu_related
Definition thread.h:296
u8 unk_60[12]
Definition thread.h:315
be_u32 ipi_args[3]
Definition thread.h:256
be_u32 dpc_active
Definition thread.h:264
X_LIST_ENTRY dispatcher_ready_list_head[32]
Definition thread.h:270
be_u32 ready_summary_mask
Definition thread.h:269
be_u32 ipi_function
Definition thread.h:258
be_u32 dpc_clock
Definition thread.h:252
be_u32 has_ready_thread_by_priority
Definition thread.h:268
be_u32 interrupt_clock
Definition thread.h:253
be_u32 targeted_ipi_cpus_mask
Definition thread.h:257
be_u32 idle_thread_active
Definition thread.h:266
be_u32 dpc_lock
Definition thread.h:262
X_SINGLE_LIST_ENTRY enqueued_threads_list
Definition thread.h:267
X_KSPINLOCK ready_list_lock
Definition thread.h:265
be_u32 dpc_interrupt_requested
Definition thread.h:261
be_ptr< X_KPRCB > ipi_initiator_prcb
Definition thread.h:259
be_u32 processor_mask
Definition thread.h:251
u8 unk_1b
Definition thread.h:471
X_KSPINLOCK thread_list_spinlock
Definition thread.h:463
be_u32 unk_5c
Definition thread.h:482
be_u32 unk_50
Definition thread.h:480
u8 process_type
Definition thread.h:478
X_LIST_ENTRY unk_54
Definition thread.h:481
be_u32 tls_slot_bitmap[8]
Definition thread.h:479
u8 is_terminating
Definition thread.h:477
be_u32 thread_count
Definition thread.h:467
be_u16 tls_slot_size
Definition thread.h:476
be_u32 clrdataa_masked_ptr
Definition thread.h:466
be_u32 kernel_stack_size
Definition thread.h:472
be_u32 tls_data_size
Definition thread.h:474
be_u32 tls_raw_data_size
Definition thread.h:475
be_u32 limit
Definition thread.h:103
XAPC on_suspend
Definition thread.h:398
be_u32 stack_limit
Definition thread.h:342
be_ptr< X_KPROCESS > process
Definition thread.h:356
X_LIST_ENTRY process_threads
Definition thread.h:401
u8 unk_ca
Definition thread.h:392
u8 boost_disabled
Definition thread.h:382
X_KTIMER wait_timeout_timer
Definition thread.h:338
u8 alerted[2]
Definition thread.h:347
u8 unk_170[0xC]
Definition thread.h:421
u8 unk_168[0x4]
Definition thread.h:419
u8 unk_ba
Definition thread.h:380
X_KSEMAPHORE suspend_sema
Definition thread.h:399
u8 unk_b9
Definition thread.h:379
X_LIST_ENTRY ready_prcb_entry
Definition thread.h:366
be_u32 last_error
Definition thread.h:417
be_u32 stack_kernel
Definition thread.h:343
be_u32 msr_mask
Definition thread.h:368
u8 process_type_dup
Definition thread.h:352
be_u32 unk_124
Definition thread.h:405
be_u32 stack_alloc_base
Definition thread.h:396
u8 suspend_count
Definition thread.h:383
be_u32 fiber_ptr
Definition thread.h:418
X_KSPINLOCK timer_list_lock
Definition thread.h:394
be_i32 quantum
Definition thread.h:377
u8 unk_b8
Definition thread.h:378
u8 thread_state
Definition thread.h:345
u8 unk_15c[0x4]
Definition thread.h:416
be_u32 unk_10
Definition thread.h:335
u8 alertable
Definition thread.h:348
be_u64 create_time
Definition thread.h:409
kernel::X_TYPED_LIST< XAPC, offsetof(XAPC, list_entry)> apc_lists[2]
Definition thread.h:355
be_u32 stack_base
Definition thread.h:341
X_LIST_ENTRY timer_list
Definition thread.h:412
u8 unk_c9
Definition thread.h:391
be_u32 unk_14
Definition thread.h:336
be_u32 unk_17c
Definition thread.h:422
u8 was_preempted
Definition thread.h:384
u8 unk_180[0x930]
Definition thread.h:423
X_KSPINLOCK apc_lock
Definition thread.h:363
rex::be_u32 kernel_time
Definition thread.h:340
X_LIST_ENTRY unk_154
Definition thread.h:415
X_KWAIT_BLOCK wait_timeout_block
Definition thread.h:339
u8 wait_irql
Definition thread.h:371
rex::BE< X_STATUS > wait_result
Definition thread.h:370
be_ptr< X_KPRCB > prcb_alias
Definition thread.h:388
be_ptr< X_KPRCB > prcb
Definition thread.h:387
be_u32 unk_118
Definition thread.h:403
be_u32 tls_address
Definition thread.h:344
u8 process_type
Definition thread.h:353
u8 executing_kernel_apc
Definition thread.h:358
u8 user_apc_pending
Definition thread.h:360
be_u32 unk_12c
Definition thread.h:407
u8 priority
Definition thread.h:350
u8 may_queue_apcs
Definition thread.h:362
u8 unk_c8
Definition thread.h:390
be_u32 num_context_switches_to
Definition thread.h:365
u8 unk_a5[0xB]
Definition thread.h:372
u8 deferred_apc_software_interrupt_state
Definition thread.h:359
i32 apc_disable_count
Definition thread.h:375
u8 fpu_exceptions_on
Definition thread.h:351
X_LIST_ENTRY queue_related
Definition thread.h:404
u8 terminated
Definition thread.h:385
be_u32 unk_128
Definition thread.h:406
u8 unk_cb
Definition thread.h:393
be_u64 due_time
Definition thread.h:120
X_LIST_ENTRY table_bucket_entry
Definition thread.h:121
be_ptr< X_KDPC > dpc
Definition thread.h:122
be_u32 period
Definition thread.h:123
be_u16 wait_result_xstatus
Definition thread.h:239
be_u16 wait_type
Definition thread.h:240
be_ptr< X_KWAIT_BLOCK > next_wait_block
Definition thread.h:238
be_ptr< X_DISPATCH_HEADER > object
Definition thread.h:237
X_LIST_ENTRY wait_list_entry
Definition thread.h:235
be_u32 flink_ptr
Definition list.h:25
be_u32 blink_ptr
Definition list.h:26
be_u32 pool_tag
Definition thread.h:147
be_u32 notify_routine
Definition thread.h:182
X_LIST_ENTRY list_entry
Definition thread.h:180
be_u32 points_to_self
Definition thread.h:490
be_u32 unk_04
Definition thread.h:489
be_u32 points_to_prior
Definition thread.h:491
be_u32 unk_00
Definition thread.h:488
Integer types, byte order wrappers and size literals.
be_u16 software_interrupt_state