This commit is contained in:
maksw committed 2026-10-27 09:28:31 +01:00
1 parent d36f19509c
commit 30d20457f0
309 files changed
+121746 -1963

No files matched your search

+21 -10
View File
@@ -147,9 +147,9 @@ static void Ps2KeyboardDpcRoutine(KDPC* dpc, void* context, void* systemArgument
gKeyboardDpcHead = (gKeyboardDpcHead + 1) & (int)KEYBOARD_DPC_QUEUE_MASK;
KeInputSubmitKey(&event);
uint32_t n = ++gKeyboardEventCount;
if ((n & (n - 1u)) == 0u)
DbgPrint("ps2: keyboard progress irq=%u raw=%u events=%u foreign=%u\n",
gKeyboardIrqCount, gKeyboardByteCount, n, gKeyboardForeignIrqCount);
// if ((n & (n - 1u)) == 0u)
// DbgPrint("ps2: keyboard progress irq=%u raw=%u events=%u foreign=%u\n",
// gKeyboardIrqCount, gKeyboardByteCount, n, gKeyboardForeignIrqCount);
}
}
@@ -174,7 +174,8 @@ static void Ps2QueueKeyboardEvent(INPUT_KEY key, bool pressed) {
}
// Implements the ps2 Keyboard Isr operation.
static void Ps2KeyboardIsr(void) {
static void Ps2KeyboardIsr(void* context) {
(void)context;
++gKeyboardIrqCount;
uint8_t status = __inbyte(PS2_STAT);
// The 8042 output buffer is shared; never consume AUX bytes as scancodes.
@@ -219,14 +220,15 @@ static void Ps2MouseDpcRoutine(KDPC* dpc, void* context, void* systemArgument1,
};
KeInputSubmitMouse(&event);
uint32_t n = ++gMousePacketCount;
if ((n & (n - 1u)) == 0u)
DbgPrint("ps2: mouse progress irq=%u raw=%u packets=%u foreign=%u\n",
gMouseIrqCount, gMouseByteCount, n, gMouseForeignIrqCount);
// if ((n & (n - 1u)) == 0u)
// DbgPrint("ps2: mouse progress irq=%u raw=%u packets=%u foreign=%u\n",
// gMouseIrqCount, gMouseByteCount, n, gMouseForeignIrqCount);
}
}
// Implements the ps2 Mouse Isr operation.
static void Ps2MouseIsr(void) {
static void Ps2MouseIsr(void* context) {
(void)context;
++gMouseIrqCount;
uint8_t status = __inbyte(PS2_STAT);
if (!(status & PS2_STAT_OUT_FULL) || !(status & PS2_STAT_AUX_DATA)) {
@@ -332,8 +334,17 @@ static KSTATUS DriverInitialize(NTL_MODULE* module) {
Ps2KeyboardInitialize();
Ps2MouseInitialize();
KeIrqRegister(PS2_IRQ_KEYBOARD, Ps2KeyboardIsr);
KeIrqRegister(PS2_IRQ_MOUSE, Ps2MouseIsr);
KE_INTERRUPT* keyboardInterrupt = (KE_INTERRUPT*)0;
KE_INTERRUPT* mouseInterrupt = (KE_INTERRUPT*)0;
KSTATUS irqStatus = KeInterruptConnectIsa(PS2_IRQ_KEYBOARD, 0, 0,
Ps2KeyboardIsr, 0, &keyboardInterrupt);
if (!KSUCCESS(irqStatus)) return irqStatus;
irqStatus = KeInterruptConnectIsa(PS2_IRQ_MOUSE, 0, 0,
Ps2MouseIsr, 0, &mouseInterrupt);
if (!KSUCCESS(irqStatus)) {
KeInterruptDisconnect(keyboardInterrupt);
return irqStatus;
}
Ps2ControllerEnableInterrupts();
DbgPrint("ps2: initialized keyboard=%u mouse=%u\n", keyboardId, mouseId);