temp
This commit is contained in:
1 parent
d36f19509c
commit
30d20457f0
309 files changed
+121746
-1963
No files matched your search
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user