mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 20:58:22 +00:00
ps2: don't wait forever on machines with no controller
This commit is contained in:
@@ -63,6 +63,21 @@ static inline void ps2_write_command(uint8_t cmd) {
|
||||
outb(PS2_PORT_COMMAND, cmd);
|
||||
}
|
||||
|
||||
static inline void ps2_write_command_timeout(uint8_t cmd, int ms, bool *timeout) {
|
||||
timespec_t initial = timekeeper_timefromboot();
|
||||
|
||||
while (ps2_inbuffer_full()) {
|
||||
timespec_t current = timekeeper_timefromboot();
|
||||
if (timespec_diffms(initial, current) >= ms) {
|
||||
*timeout = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
*timeout = false;
|
||||
outb(PS2_PORT_COMMAND, cmd);
|
||||
}
|
||||
|
||||
static inline void ps2_write_data(uint8_t cmd) {
|
||||
while (ps2_inbuffer_full());
|
||||
outb(PS2_PORT_DATA, cmd);
|
||||
|
||||
Reference in New Issue
Block a user