X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/a89063b334fdc0b254f0791fca1812354049b86d..bc4c6e1218d6903b07c32b11ea7d3c82c463686e:/lunaix-os/kernel/peripheral/ps2kbd.c diff --git a/lunaix-os/kernel/peripheral/ps2kbd.c b/lunaix-os/kernel/peripheral/ps2kbd.c index 72f5d1f..6905b1e 100644 --- a/lunaix-os/kernel/peripheral/ps2kbd.c +++ b/lunaix-os/kernel/peripheral/ps2kbd.c @@ -124,11 +124,9 @@ ps2_kbd_init() * 需要注意:Bochs 和 QEMU 使用的是ACPI v1,而非 v2 * (virtualbox好像是v4) * - * (2022/6/28) - * QEMU似乎在 Q35 + ICH9 支持了 ACPI - * v2。但是对于IAPC_BOOT_ARCH的设置还是 停留在ACPI - * v1的时代。IAPC_ARCH_8042没有被正确的设置。这是一个今年的bug,好像还未修复 - * 参考:https://lore.kernel.org/all/20220304115257.1816983-1-ani@anisinha.ca/T/ + * (2022/6/29) + * QEMU在7.0.0版本中,修复了FADT::IAPC_BOOT无法正确提供关于i8042的信息的bug + * https://wiki.qemu.org/ChangeLog/7.0#ACPI_.2F_SMBIOS * * 请看Bochs的bios源码(QEMU的BIOS其实是照抄bochs的,所以也是一个德行。。): * https://bochs.sourceforge.io/cgi-bin/lxr/source/bios/rombios32.c#L1314 @@ -429,11 +427,9 @@ kbd_recv_key(struct kdb_keyinfo_pkt* key_event) if (!key_buf.buffered_len) { return 0; } - mutex_lock(&key_buf.mutex); - - struct kdb_keyinfo_pkt* pkt_current = &key_buf.buffer[key_buf.read_ptr]; - *key_event = *pkt_current; + mutex_lock(&key_buf.mutex); + *key_event = key_buf.buffer[key_buf.read_ptr]; key_buf.buffered_len--; key_buf.read_ptr = (key_buf.read_ptr + 1) % PS2_KBD_RECV_BUFFER_SIZE;