Kernel: Add timeout for device commands on PS/2 devices
This commit is contained in:
@@ -61,6 +61,7 @@ namespace Kernel::Input
|
||||
RecursiveSpinLock m_lock;
|
||||
|
||||
BAN::CircularQueue<Command, 128> m_command_queue;
|
||||
uint64_t m_command_send_time { 0 };
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ namespace Kernel::Input
|
||||
|
||||
virtual void send_initialize() = 0;
|
||||
|
||||
virtual void command_timedout(uint8_t* command_data, uint8_t command_size) = 0;
|
||||
|
||||
bool append_command_queue(uint8_t command, uint8_t response_size);
|
||||
bool append_command_queue(uint8_t command, uint8_t data, uint8_t response_size);
|
||||
virtual void handle_irq() final override;
|
||||
|
||||
@@ -23,6 +23,8 @@ namespace Kernel::Input
|
||||
static BAN::ErrorOr<PS2Keyboard*> create(PS2Controller&);
|
||||
virtual void send_initialize() override;
|
||||
|
||||
virtual void command_timedout(uint8_t* command_data, uint8_t command_size) final override;
|
||||
|
||||
virtual void handle_byte(uint8_t) final override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -19,6 +19,8 @@ namespace Kernel::Input
|
||||
static BAN::ErrorOr<PS2Mouse*> create(PS2Controller&);
|
||||
virtual void send_initialize() override;
|
||||
|
||||
virtual void command_timedout(uint8_t* command_data, uint8_t command_size) final override {}
|
||||
|
||||
virtual void handle_byte(uint8_t) final override;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user