1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 20:17:42 +00:00

Kernel: Initialize and expose SerialDevice(s) properly

I forgot that we need to also initialize SerialDevice and also to ensure
it creates a sysfs node properly. Although I had a better fix for this,
it keeps the CI happy, so for now it's more than enough :)
This commit is contained in:
Liav A 2021-09-11 16:48:29 +03:00 committed by Idan Horowitz
parent f2ba7ac935
commit 7dfecbee44
2 changed files with 19 additions and 11 deletions

View file

@ -18,24 +18,30 @@ namespace Kernel {
UNMAP_AFTER_INIT NonnullRefPtr<SerialDevice> SerialDevice::must_create(size_t com_number) UNMAP_AFTER_INIT NonnullRefPtr<SerialDevice> SerialDevice::must_create(size_t com_number)
{ {
SerialDevice* device = nullptr; // FIXME: This way of blindly doing release_value is really not a good thing, find
// a way to propagate errors back.
RefPtr<SerialDevice> serial_device;
switch (com_number) { switch (com_number) {
case 0: case 0: {
device = new SerialDevice(IOAddress(SERIAL_COM1_ADDR), 64); serial_device = try_create_device<SerialDevice>(IOAddress(SERIAL_COM1_ADDR), 64).release_value();
break; break;
case 1: }
device = new SerialDevice(IOAddress(SERIAL_COM2_ADDR), 65); case 1: {
serial_device = try_create_device<SerialDevice>(IOAddress(SERIAL_COM2_ADDR), 65).release_value();
break; break;
case 2: }
device = new SerialDevice(IOAddress(SERIAL_COM3_ADDR), 66); case 2: {
serial_device = try_create_device<SerialDevice>(IOAddress(SERIAL_COM3_ADDR), 66).release_value();
break; break;
case 3: }
device = new SerialDevice(IOAddress(SERIAL_COM4_ADDR), 67); case 3: {
serial_device = try_create_device<SerialDevice>(IOAddress(SERIAL_COM4_ADDR), 67).release_value();
break; break;
}
default: default:
break; break;
} }
return adopt_ref_if_nonnull(device).release_nonnull(); return serial_device.release_nonnull();
} }
UNMAP_AFTER_INIT SerialDevice::SerialDevice(IOAddress base_addr, unsigned minor) UNMAP_AFTER_INIT SerialDevice::SerialDevice(IOAddress base_addr, unsigned minor)

View file

@ -102,10 +102,12 @@ public:
DataReady = 0x01 << 0 DataReady = 0x01 << 0
}; };
// FIXME: We expose this constructor to make try_create_device helper to work
SerialDevice(IOAddress base_addr, unsigned minor);
private: private:
friend class PCISerialDevice; friend class PCISerialDevice;
SerialDevice(IOAddress base_addr, unsigned minor);
// ^CharacterDevice // ^CharacterDevice
virtual StringView class_name() const override { return "SerialDevice"; } virtual StringView class_name() const override { return "SerialDevice"; }