Sfoglia il codice sorgente

Kernel: Propagate HIDManagement initialisation error to init

Initialisation errors for HIDManagement are now returned to the init. In
the init we assert by MUST if we get an error.
Lorenz Steinert 3 anni fa
parent
commit
78f8821152

+ 2 - 3
Kernel/Devices/HID/HIDManagement.cpp

@@ -137,12 +137,11 @@ UNMAP_AFTER_INIT ErrorOr<void> HIDManagement::enumerate()
     return {};
 }
 
-UNMAP_AFTER_INIT void HIDManagement::initialize()
+UNMAP_AFTER_INIT ErrorOr<void> HIDManagement::initialize()
 {
     VERIFY(!s_the.is_initialized());
     s_the.ensure_instance();
-    // FIXME: Propagate errors back to init to deal with them.
-    MUST(s_the->enumerate());
+    return s_the->enumerate();
 }
 
 HIDManagement& HIDManagement::the()

+ 1 - 1
Kernel/Devices/HID/HIDManagement.h

@@ -35,7 +35,7 @@ class HIDManagement {
 
 public:
     HIDManagement();
-    static void initialize();
+    static ErrorOr<void> initialize();
     static HIDManagement& the();
 
     ErrorOr<void> enumerate();

+ 0 - 2
Kernel/Devices/HID/PS2MouseDevice.cpp

@@ -154,7 +154,6 @@ ErrorOr<u8> PS2MouseDevice::send_command(u8 command)
 
     if (response != I8042Response::Acknowledge) {
         dbgln("PS2MouseDevice: Command {} got {} but expected ack: {}", command, response, static_cast<u8>(I8042Response::Acknowledge));
-        // FIXME: Is this the correct errno value for this?
         return Error::from_errno(EIO);
     }
     return response;
@@ -165,7 +164,6 @@ ErrorOr<u8> PS2MouseDevice::send_command(u8 command, u8 data)
     u8 response = TRY(m_i8042_controller->send_command(instrument_type(), command, data));
     if (response != I8042Response::Acknowledge) {
         dbgln("PS2MouseDevice: Command {} got {} but expected ack: {}", command, response, static_cast<u8>(I8042Response::Acknowledge));
-        // FIXME: Is this the correct errno value for this?
         return Error::from_errno(EIO);
     }
     return response;

+ 1 - 1
Kernel/init.cpp

@@ -326,7 +326,7 @@ void init_stage2(void*)
     (void)SerialDevice::must_create(3).leak_ref();
 
     VMWareBackdoor::the(); // don't wait until first mouse packet
-    HIDManagement::initialize();
+    MUST(HIDManagement::initialize());
 
     GraphicsManagement::the().initialize();
     ConsoleManagement::the().initialize();