Commit Graph
100 Commits
Author SHA1 Message Date
harraiken 854a8c8eef Document the backlinking 2026-06-17 20:40:23 +02:00
harraiken 1fca2400a4 Add functions to transition threads to deferred ready or transition states 2026-06-17 16:30:28 +02:00
harraiken ea1ad3c6b1 Implement deferred ready thread insertion 2026-06-17 16:13:02 +02:00
harraiken cea860b008 Implement LIFO queue 2026-06-17 15:42:08 +02:00
harraiken 6560ca9b96 Refactor thread initialization to attach to process 2026-06-17 12:15:32 +02:00
harraiken ffcb2dbeda Correct initial StackCount value to reflect underlying type width 2026-06-17 11:12:11 +02:00
harraiken 780bf92b40 Annotate POWER_PERFORMANCE_SCALE definition 2026-06-16 12:59:18 +02:00
harraiken cc288f5417 Remove hardcoded throttle value 2026-06-16 12:53:07 +02:00
harraiken 55eb3047e3 Implement i686 RunThread with inline assembly 2026-06-16 12:25:26 +02:00
harraiken 8597e37650 Implement AMD64 RunThread with inline assembly 2026-06-16 12:00:56 +02:00
harraiken 1c90218042 Move RunThread to architecture-specific implementations 2026-06-16 11:43:42 +02:00
harraiken f6f37494cd Fix stack alignment and shadow space for EntryPoint call 2026-06-16 11:39:31 +02:00
harraiken d1aa3cf481 Trigger INT3 on unexpected system thread termination 2026-06-16 10:49:16 +02:00
harraiken 208684c3b4 Update i686 thread context initialization to match AMD64 2026-06-15 09:15:48 +02:00
harraiken 89681897d7 Wire thread startup frame to return to user-mode switch or system thread exit handler 2026-06-14 01:34:24 +02:00
harraiken e035666f7a Fix i686 thread context setup 2026-06-14 00:53:34 +02:00
harraiken df35bf8601 Add thread startup stub 2026-06-14 00:50:23 +02:00
harraiken 15523e7d71 Fix AMD64 thread context setup 2026-06-14 00:44:02 +02:00
harraiken f79c9023d8 Initialize thread service table 2026-06-12 23:19:05 +02:00
harraiken 97703c7932 Add stub for System Service Descriptor Table accessor routine 2026-06-12 23:16:20 +02:00
harraiken 2f5902119d Update thread initialization code 2026-06-12 20:52:23 +02:00
harraiken 7a10135731 Replace jmp with call to maintain ABI stack alignment 2026-06-12 15:58:42 +02:00
harraiken b0074637f8 Remove hardcoded shift in SIPI vector calculation 2026-06-12 14:21:27 +02:00
harraiken 1a062ca05f Trigger low memory allocation before PFN database initialization 2026-06-12 13:21:22 +02:00
harraiken c702152cca Refactor real-mode memory allocation and identity mapping for AP trampoline 2026-06-12 13:16:48 +02:00
harraiken 81c799e590 Fix TrampolineCodeSize variable type 2026-06-12 12:59:16 +02:00
harraiken cf0d7f0a40 Update trampoline size output parameter to PULONG across bootloader and kernel 2026-06-12 12:54:53 +02:00
harraiken b0d2868f82 Update PTE mapping to allocate from PFN database 2026-06-12 08:54:51 +02:00
harraiken 32f0b747a1 Convert dispatcher context switch functions to naked assembly 2026-06-10 16:48:54 +02:00
harraiken c57aa98923 Free affinity maps on allocation failure and remove redundant idle process affinity loop 2026-06-10 14:08:07 +02:00
harraiken 429e4ef6f1 Add bounds checking to affinity map bit operations and introduce InitializeAffinityMap 2026-06-10 12:51:05 +02:00
harraiken 39928f2ef4 Add documentation for InitializeProcessorAffinity 2026-06-10 12:11:03 +02:00
harraiken 51ec7e3bab Fix build by initializing thread dispatcher header 2026-06-10 11:56:49 +02:00
harraiken f3ae70573c Initialize dispatcher header 2026-06-10 11:46:26 +02:00
harraiken 830f84ab26 Pass initial affinity map to InitializeProcess 2026-06-10 11:27:25 +02:00
harraiken 5a9df7ca86 Add helper to set full system processor affinity mask 2026-06-10 11:13:28 +02:00
harraiken 4bcdcda3a0 Change ActiveProcessors to a pointer for dynamic allocation 2026-06-10 10:31:24 +02:00
harraiken 7a27912dac Dynamically allocate active processors affinity map 2026-06-10 10:22:15 +02:00
harraiken cf4b91ac83 Simplify active processor bit setting 2026-06-09 23:27:24 +02:00
harraiken 36c3d92399 Refactor idle thread initialization 2026-06-09 23:24:40 +02:00
harraiken 6a2a35c008 Refactor idle process initialization 2026-06-09 23:17:03 +02:00
harraiken a9202f5b57 Refactor CalculateAffinityMapSize and add CreateAffinityMap 2026-06-09 22:53:37 +02:00
harraiken 4cbefe3a22 Implement affinity map bit manipulation and memory sizing helpers 2026-06-09 20:17:47 +02:00
harraiken 3841ceaf5b Refactor processor affinity logic 2026-06-09 19:33:20 +02:00
harraiken e2eb784eef Enter idle loop instead of halting system 2026-06-09 09:39:17 +02:00
harraiken 6078a5ba29 Implement idle thread loop 2026-06-09 08:36:39 +02:00
harraiken 663f5cd048 Drop obsolete IPI exception dispatch path 2026-06-08 20:55:17 +02:00
harraiken 5999906bf0 Switch CPU exception IDT entries to interrupt gates to mask interrupts on entry 2026-06-08 20:46:51 +02:00
harraiken 1e0c1490fb Remove redundant IDT gate initialization for vector 0xE1 2026-06-08 20:41:02 +02:00
harraiken 5b0eebdb43 Initialize system interrupt handlers 2026-06-08 20:15:18 +02:00
harraiken 9e64939de4 Add XTCLINK linkage to KeStartXtSystem 2026-06-08 20:06:23 +02:00
harraiken b911670121 Freeze secondary processors during kernel panic 2026-06-08 15:02:55 +02:00
harraiken d175a817a5 Add IPI service routines for APC, DPC, and freeze request handling 2026-06-08 14:49:02 +02:00
harraiken b285bc7312 Implement multi-processor freeze and thaw execution for SMP crash state synchronization 2026-06-08 14:38:17 +02:00
harraiken c8cd198c4e Fix Task Register restoration by clearing busy bit in TSS descriptor 2026-06-08 13:40:20 +02:00
harraiken 95d45f5a0a Do not restore Task Register during AMD64 processor control state restoration 2026-06-08 13:05:24 +02:00
harraiken 766e4d9603 Register BSP in processor block array during initialization 2026-06-08 11:21:53 +02:00
harraiken a601fd0afa Mark BSP processor as started 2026-06-08 10:22:41 +02:00
harraiken cc23e459e0 Move SwitchProcessor to architecture-specific implementations 2026-06-07 22:53:00 +02:00
harraiken d36b678ba1 Add kd/debug.cc to xtoskrnl source list 2026-06-07 22:41:31 +02:00
harraiken 43265bcddb Bypass debug I/O locks during kernel panic or debugger session 2026-06-07 22:37:59 +02:00
harraiken 47d4069d6f Add functions to save and restore processor context and control state 2026-06-07 20:33:02 +02:00
harraiken 904df63198 Remove duplicate context flag definitions 2026-06-07 19:40:29 +02:00
harraiken 1df971a71e Extend CONTEXT and PRCB structures with context flags and IPI state fields 2026-06-07 18:47:48 +02:00
harraiken 2a413d5717 Update processor state save calls 2026-06-07 13:11:04 +02:00
harraiken 9c2357dfe6 Expose installed CPU count and rename state save function 2026-06-07 13:05:31 +02:00
harraiken f82562f450 Rename SwitchCpu to SwitchProcessor 2026-06-07 12:33:56 +02:00
harraiken a33b63842a Add IPI definitions and frozen states, change KAFFINITY_MAP to flexible array 2026-06-07 12:13:55 +02:00
harraiken 4256a312ae Implement kernel debugger entry point 2026-06-07 02:04:27 +02:00
harraiken 678a0f4f48 Add static member definitions for kernel debugger active flag and kernel panic state 2026-06-06 19:00:49 +02:00
harraiken 7344c5ed4a Add function to query kernel debugger active state 2026-06-06 18:57:32 +02:00
harraiken 537fbc8af4 Track kernel panic state 2026-06-06 18:52:05 +02:00
harraiken cf25af23d1 Add conditional acquisition parameter to RAII guard classes 2026-06-06 17:26:39 +02:00
harraiken f680830b53 Implement resource cleanup for failed allocations during idle thread setup 2026-06-04 14:36:43 +02:00
harraiken 53a239958f Propagate allocation failures from idle process and thread setup 2026-06-04 14:30:01 +02:00
harraiken f13326ffaf Add PS subsystem overview to kernel documentation 2026-06-04 13:18:33 +02:00
harraiken 75e7760d04 Delegate idle process and thread setup to PS subsystem 2026-06-04 13:14:21 +02:00
harraiken 02d0f3f538 Introduce PS subsystem with IDLE process and thread creation 2026-06-04 13:09:09 +02:00
harraiken e2a78389f2 Fix incorrect namespace comment 2026-06-04 12:58:59 +02:00
harraiken 81fdf1f77a Allocate executive thread structure for idle thread and assign PRCB pointers 2026-06-04 11:57:58 +02:00
harraiken 631f58bf72 Update InitializeProcess doxygen 2026-06-04 11:57:56 +02:00
harraiken 1d2d66fc83 Dedicated Idle process and thread initialization with dynamic affinity allocation 2026-06-04 11:57:49 +02:00
harraiken 34aba8c7c7 Remove software interrupt 0x2F trap handler 2026-06-03 15:57:12 +02:00
harraiken 5e764a0d17 Fix IDT entry for vector 0x2F to use interrupt entry point 2026-06-03 15:43:11 +02:00
harraiken 65e86db731 Migrate thread affinity from GROUP_AFFINITY to KAFFINITY_MAP 2026-06-01 22:28:21 +02:00
harraiken 615d253bb4 Update initial thread and process affinity assignment to use group-aware structures 2026-06-01 20:40:34 +02:00
harraiken 2fcbc7bee8 Implement processor affinity search functions 2026-06-01 01:10:40 +02:00
harraiken 2c14da997d Convert process affinity assignment to KAFFINITY_MAP 2026-06-01 01:06:13 +02:00
harraiken a7c2182d4a Extend processor affinity structures to support group affinity 2026-06-01 01:03:18 +02:00
harraiken 0aabc206a1 Add BSF and BSR instruction wrappers 2026-06-01 00:36:52 +02:00
harraiken 7d8b33390a Add runtime accounting and DPC throttling 2026-05-30 23:53:47 +02:00
harraiken 5a5604c35d Register dispatch interrupt handler 2026-05-28 23:50:02 +02:00
harraiken addf9addab Verify system timer expiration on every clock interrupt 2026-05-28 00:38:49 +02:00
harraiken f562aa0874 Implement timer table list and check for expired timers 2026-05-28 00:36:25 +02:00
harraiken 19a9dfe7c6 Add PrcbLock and runtime counters to KPROCESSOR_CONTROL_BLOCK 2026-05-27 23:15:19 +02:00
harraiken 46594f1fc3 Introduce KWAIT_REASON enumeration for thread wait reasons 2026-05-27 20:23:18 +02:00
harraiken a93ebbfb5b Populate pool tracking table with common allocation tags 2026-05-23 17:40:40 +02:00
harraiken 53726b5743 Correct pool tag registration size 2026-05-22 23:55:02 +02:00
harraiken 71870cd178 Remove per-CPU pool tracking tables 2026-05-22 23:45:32 +02:00
harraiken 6f3b5b5e51 Clean up whitespace alignment 2026-05-22 19:29:55 +02:00