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);
+6 -2
View File
@@ -308,7 +308,8 @@ static void SerialQueueRxByte(uint8_t ch) {
}
// Handles receive interrupts for COM1.
static void SerialIsr(void) {
static void SerialIsr(void* context) {
(void)context;
for (uint32_t i = 0; i < 256u; i++) {
if ((SerialRead(SERIAL_REG_LSR) & SERIAL_LSR_DATA_READY) == 0)
break;
@@ -367,7 +368,10 @@ static KSTATUS SerialInitialize(NTL_MODULE* module) {
gSerialRxTail = 0;
gSerialRxDropped = 0;
KeIrqRegister(SERIAL_COM1_IRQ, SerialIsr);
KE_INTERRUPT* serialInterrupt = (KE_INTERRUPT*)0;
KSTATUS irqStatus = KeInterruptConnectIsa(SERIAL_COM1_IRQ, 0, 0,
SerialIsr, 0, &serialInterrupt);
if (!KSUCCESS(irqStatus)) return irqStatus;
SerialWrite(SERIAL_REG_IER, SERIAL_IER_RX_READY);
DbgPrint("serial: initialized COM1 input device=%u irq=%u\n", deviceId, SERIAL_COM1_IRQ);