Procházet zdrojové kódy

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 před 3 roky
rodič
revize
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();