add a realtime scheduler class and priority-inheritance mutexes with timeouts and abandonment, add an HDA audio driver and a SYS_AUDIO_* syscall family, flesh out kernel32 with Win32 threads, events, mutexes, critical sections, and condition variables, add SYS_RESUME_THREAD for suspended thread creation, add KeInitializeMemoryTypes to reprogram MTRRs and install a canonical PAT for WB/WC/UC control, rework the display pipeline with a pitched present path and console output flush, bring back disk.vhd with mtools since vvfat fucking sucks, harden AHCI with serialized cache flush, USB mass storage with SCSI sense-data decoding, and xHCI with cleaner DMA teardown, fix the last stray for(;;) in HalStopProcessor to while(true), pile on smoke tests for audio, win32 sync primitives, and thread suspend, implement AHCI timeout, kill readahead since it was desperetaly trying to murder me, fix doom sound x2.
This commit is contained in:
1 parent
8b254f84f4
commit
4add6789ba
177 files changed
+22565
-3070
No files matched your search
@@ -250,6 +250,7 @@ typedef volatile struct {
|
||||
#define PORT_CMD_ICC_ACTIVE (0x1u << 28)
|
||||
|
||||
// Port IS register bits (interrupt status).
|
||||
#define PORT_IS_DHRS (1u << 0) // D2H Register FIS Received.
|
||||
#define PORT_IS_TFES (1u << 30) // Task File Error Status
|
||||
#define PORT_IS_HBFS (1u << 29) // Host Bus Fatal Error
|
||||
#define PORT_IS_HBDS (1u << 28) // Host Bus Data Error
|
||||
@@ -321,11 +322,13 @@ typedef struct {
|
||||
uint8_t portNo; // Physical port index (for ISR dispatch)
|
||||
|
||||
// Structures block (command list + FIS + cmd tables).
|
||||
uint64_t structPhys; // Physical base
|
||||
void* structVirt; // Virtual base
|
||||
IO_DMA_BUFFER* structDma;
|
||||
uint64_t structDeviceAddress; // Device base.
|
||||
void* structVirt; // CPU base.
|
||||
|
||||
// Bounce buffer for DMA data.
|
||||
uint64_t bouncePhys;
|
||||
IO_DMA_BUFFER* bounceDma;
|
||||
uint64_t bounceDeviceAddress;
|
||||
void* bounceVirt;
|
||||
|
||||
// Signaled by the completion DPC when the port raises an interrupt.
|
||||
@@ -345,13 +348,16 @@ typedef struct {
|
||||
IO_REMOVE_LOCK removeLock;
|
||||
bool surpriseRemoved;
|
||||
bool removed;
|
||||
bool removeLockReady;
|
||||
volatile bool workerRunning;
|
||||
THREAD* workerThread;
|
||||
EVENT* workerFinished;
|
||||
DEVICE_OBJECT* deviceObject;
|
||||
|
||||
// Multi-slot NCQ needs per-slot ownership state in addition to the serialized queue:
|
||||
// uint32_t slotMask; // bitmask of in-flight slots
|
||||
// IRP* slotIrp[NUM_CMD_SLOTS]; // slot → pending IRP
|
||||
// uint64_t slotBouncePhys[NUM_CMD_SLOTS];
|
||||
// uint64_t slotBounceDeviceAddress[NUM_CMD_SLOTS];
|
||||
// void* slotBounceVirt[NUM_CMD_SLOTS];
|
||||
// volatile uint32_t prevSact; // previous port->sact snapshot.
|
||||
} AHCI_DRIVE;
|
||||
@@ -361,6 +367,7 @@ struct AHCI_CONTROLLER {
|
||||
DEVICE_OBJECT* fdo;
|
||||
DEVICE_OBJECT* pdo;
|
||||
DEVICE_OBJECT* lowerDevice;
|
||||
IO_DMA_ADAPTER* dmaAdapter;
|
||||
|
||||
PCI_DEVICE_INFO pciInfo;
|
||||
PCI_BAR abar;
|
||||
|
||||
Reference in new issue
Block a user