1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:38:11 +00:00

Kernel/Devices: Remove required_mode and device_name methods

These methods are no longer needed because SystemServer is able to
populate the DevFS on its own.

Device absolute_path no longer assume a path to the /dev location,
because it really should not assume any path to a Device node.

Because StorageManagement still needs to know the storage name, we
declare a virtual method only for StorageDevices to override, but this
technique should really be removed later on.
This commit is contained in:
Liav A 2021-08-14 07:01:19 +03:00 committed by Andreas Kling
parent 4f04cb98c1
commit 21b6d84ff0
38 changed files with 18 additions and 141 deletions

View file

@ -158,11 +158,6 @@ KResultOr<size_t> ConsolePort::write(OpenFileDescription& desc, u64, const UserO
return total_bytes_copied;
}
String ConsolePort::device_name() const
{
return String::formatted("hvc{}p{}", m_console.device_id(), m_port);
}
KResultOr<NonnullRefPtr<OpenFileDescription>> ConsolePort::open(int options)
{
if (!m_open)

View file

@ -40,10 +40,6 @@ private:
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
virtual KResultOr<NonnullRefPtr<OpenFileDescription>> open(int options) override;
mode_t required_mode() const override { return 0666; }
String device_name() const override;
void init_receive_buffer();
static unsigned next_device_id;

View file

@ -33,10 +33,6 @@ public:
const CircularQueue<char, 16384>& logbuffer() const { return m_logbuffer; }
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "console"; }
private:
CircularQueue<char, 16384> m_logbuffer;
};

View file

@ -51,8 +51,11 @@ Device::~Device()
String Device::absolute_path() const
{
// FIXME: Don't assume mount point for DevFs
return String::formatted("/dev/{}", device_name());
// FIXME: I assume we can't really provide a well known path in the kernel
// because this is a violation of abstraction layers between userland and the
// kernel, but maybe the whole name of "absolute_path" is just wrong as this
// is really not an "absolute_path".
return String::formatted("device:{},{}", major(), minor());
}
String Device::absolute_path(const OpenFileDescription&) const

View file

@ -37,9 +37,6 @@ public:
UserID uid() const { return m_uid; }
GroupID gid() const { return m_gid; }
virtual mode_t required_mode() const = 0;
virtual String device_name() const = 0;
virtual bool is_device() const override { return true; }
static void for_each(Function<void(Device&)>);

View file

@ -16,10 +16,6 @@ public:
static NonnullRefPtr<FullDevice> must_create();
virtual ~FullDevice() override;
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "full"; }
private:
FullDevice();

View file

@ -33,14 +33,9 @@ public:
// ^HIDDevice
virtual Type instrument_type() const override { return Type::Keyboard; }
// ^Device
virtual mode_t required_mode() const override { return 0440; }
// ^File
virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override;
virtual String device_name() const override { return String::formatted("keyboard{}", minor()); }
void update_modifier(u8 modifier, bool state)
{
if (state)

View file

@ -31,11 +31,6 @@ public:
// ^HIDDevice
virtual Type instrument_type() const override { return Type::Mouse; }
// ^Device
virtual mode_t required_mode() const override { return 0440; }
virtual String device_name() const override { return String::formatted("mouse{}", minor()); }
protected:
MouseDevice();
// ^CharacterDevice

View file

@ -141,9 +141,4 @@ KResultOr<Memory::Region*> KCOVDevice::mmap(Process& process, OpenFileDescriptio
range, *kcov_instance->vmobject(), offset, {}, prot, shared);
}
String KCOVDevice::device_name() const
{
return "kcov"sv;
}
}

View file

@ -25,10 +25,6 @@ public:
KResultOr<Memory::Region*> mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override;
KResultOr<NonnullRefPtr<OpenFileDescription>> open(int options) override;
// ^Device
virtual mode_t required_mode() const override { return 0660; }
virtual String device_name() const override;
protected:
virtual StringView class_name() const override { return "KCOVDevice"; }

View file

@ -21,10 +21,6 @@ public:
virtual KResultOr<Memory::Region*> mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override;
// ^Device
virtual mode_t required_mode() const override { return 0660; }
virtual String device_name() const override { return "mem"; };
private:
MemoryDevice();
virtual StringView class_name() const override { return "MemoryDevice"; }

View file

@ -19,10 +19,6 @@ public:
static void initialize();
static NullDevice& the();
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "null"; }
private:
// ^CharacterDevice
virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;

View file

@ -16,10 +16,6 @@ public:
static NonnullRefPtr<RandomDevice> must_create();
virtual ~RandomDevice() override;
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "random"; }
private:
RandomDevice();

View file

@ -34,10 +34,6 @@ public:
virtual StringView purpose() const override { return class_name(); }
// ^Device
virtual mode_t required_mode() const override { return 0220; }
virtual String device_name() const override { return "audio"; }
virtual KResult ioctl(OpenFileDescription&, unsigned, Userspace<void*>) override;
private:

View file

@ -104,11 +104,6 @@ void SerialDevice::put_char(char ch)
m_last_put_char_was_carriage_return = (ch == '\r');
}
String SerialDevice::device_name() const
{
return String::formatted("ttyS{}", minor() - 64);
}
UNMAP_AFTER_INIT void SerialDevice::initialize()
{
set_interrupts(false);

View file

@ -102,10 +102,6 @@ public:
DataReady = 0x01 << 0
};
// ^Device
virtual mode_t required_mode() const override { return 0620; }
virtual String device_name() const override;
private:
friend class PCISerialDevice;

View file

@ -16,10 +16,6 @@ public:
static NonnullRefPtr<ZeroDevice> must_create();
virtual ~ZeroDevice() override;
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "zero"; }
private:
ZeroDevice();
// ^CharacterDevice

View file

@ -84,11 +84,6 @@ void FramebufferDevice::activate_writes()
m_graphical_writes_enabled = true;
}
String FramebufferDevice::device_name() const
{
return String::formatted("fb{}", minor());
}
UNMAP_AFTER_INIT KResult FramebufferDevice::initialize()
{
// FIXME: Would be nice to be able to unify this with mmap above, but this

View file

@ -25,10 +25,6 @@ public:
virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override;
virtual KResultOr<Memory::Region*> mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override;
// ^Device
virtual mode_t required_mode() const override { return 0660; }
virtual String device_name() const override;
virtual void deactivate_writes();
virtual void activate_writes();
size_t framebuffer_size_in_bytes() const;

View file

@ -68,9 +68,6 @@ private:
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; };
virtual void start_request(AsyncBlockDeviceRequest& request) override { request.complete(AsyncDeviceRequest::Failure); }
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return String::formatted("fb{}", minor()); }
static bool is_valid_buffer_index(int buffer_index)
{
return buffer_index == 0 || buffer_index == 1;

View file

@ -41,7 +41,7 @@ void PATADiskDevice::start_request(AsyncBlockDeviceRequest& request)
m_channel->start_request(request, is_slave(), m_capabilities);
}
String PATADiskDevice::device_name() const
String PATADiskDevice::storage_name() const
{
return String::formatted("hd{:c}", 'a' + minor());
}

View file

@ -42,7 +42,7 @@ public:
// ^BlockDevice
virtual void start_request(AsyncBlockDeviceRequest&) override;
virtual String device_name() const override;
virtual String storage_name() const override;
private:
PATADiskDevice(const IDEController&, IDEChannel&, DriveType, InterfaceType, u16, u64);

View file

@ -68,13 +68,6 @@ bool DiskPartition::can_write(const OpenFileDescription& fd, size_t offset) cons
return m_device->can_write(fd, offset + adjust);
}
String DiskPartition::device_name() const
{
// FIXME: Try to not hardcode a maximum of 16 partitions per drive!
size_t partition_index = minor() % 16;
return String::formatted("{}{}", m_device->device_name(), partition_index + 1);
}
StringView DiskPartition::class_name() const
{
return "DiskPartition";

View file

@ -25,10 +25,6 @@ public:
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
virtual bool can_write(const OpenFileDescription&, size_t) const override;
// ^Device
virtual mode_t required_mode() const override { return 0600; }
virtual String device_name() const override;
const DiskPartitionMetadata& metadata() const;
private:

View file

@ -55,7 +55,7 @@ void RamdiskDevice::start_request(AsyncBlockDeviceRequest& request)
}
}
String RamdiskDevice::device_name() const
String RamdiskDevice::storage_name() const
{
// FIXME: Try to not hardcode a maximum of 16 partitions per drive!
size_t drive_index = minor() / 16;

View file

@ -26,7 +26,7 @@ public:
// ^DiskDevice
virtual StringView class_name() const override;
virtual String device_name() const override;
virtual String storage_name() const override;
bool is_slave() const;

View file

@ -37,7 +37,7 @@ void SATADiskDevice::start_request(AsyncBlockDeviceRequest& request)
m_port->start_request(request);
}
String SATADiskDevice::device_name() const
String SATADiskDevice::storage_name() const
{
return String::formatted("hd{:c}", 'a' + minor());
}

View file

@ -30,7 +30,7 @@ public:
// ^StorageDevice
// ^BlockDevice
virtual void start_request(AsyncBlockDeviceRequest&) override;
virtual String device_name() const override;
virtual String storage_name() const override;
private:
SATADiskDevice(const AHCIController&, const AHCIPort&, size_t sector_size, u64 max_addressable_block);

View file

@ -29,8 +29,8 @@ public:
virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
virtual bool can_write(const OpenFileDescription&, size_t) const override;
// ^Device
virtual mode_t required_mode() const override { return 0600; }
// FIXME: This is being used only during early boot, find a better way to find devices...
virtual String storage_name() const = 0;
protected:
StorageDevice(const StorageController&, size_t, u64);

View file

@ -126,15 +126,12 @@ UNMAP_AFTER_INIT void StorageManagement::determine_boot_device()
{
VERIFY(!m_controllers.is_empty());
if (m_boot_argument.starts_with("/dev/")) {
StringView device_name = m_boot_argument.substring_view(5);
Device::for_each([&](Device& device) {
if (device.is_block_device()) {
auto& block_device = static_cast<BlockDevice&>(device);
if (device.device_name() == device_name) {
m_boot_block_device = block_device;
}
StringView storage_name = m_boot_argument.substring_view(5);
for (auto& storage_device : m_storage_devices) {
if (storage_device.storage_name() == storage_name) {
m_boot_block_device = storage_device;
}
});
}
}
if (m_boot_block_device.is_null()) {

View file

@ -130,9 +130,4 @@ String MasterPTY::absolute_path(const OpenFileDescription&) const
return String::formatted("ptm:{}", m_pts_name);
}
String MasterPTY::device_name() const
{
return String::formatted("{}", minor());
}
}

View file

@ -28,10 +28,6 @@ public:
virtual String absolute_path(const OpenFileDescription&) const override;
// ^Device
virtual mode_t required_mode() const override { return 0640; }
virtual String device_name() const override;
private:
explicit MasterPTY(unsigned index, NonnullOwnPtr<DoubleBuffer> buffer);
// ^CharacterDevice

View file

@ -35,10 +35,6 @@ public:
void notify_master_destroyed(Badge<MasterPTY>, unsigned index);
// ^Device
virtual mode_t required_mode() const override { return 0666; }
virtual String device_name() const override { return "ptmx"; }
private:
// ^CharacterDevice
virtual StringView class_name() const override { return "PTYMultiplexer"; }

View file

@ -107,11 +107,6 @@ KResult SlavePTY::close()
return KSuccess;
}
String SlavePTY::device_name() const
{
return String::formatted("{}", minor());
}
FileBlockerSet& SlavePTY::blocker_set()
{
return m_master->blocker_set();

View file

@ -38,9 +38,6 @@ private:
virtual StringView class_name() const override { return "SlavePTY"; }
virtual KResult close() override;
// ^Device
virtual String device_name() const override;
friend class MasterPTY;
SlavePTY(MasterPTY&, unsigned index);

View file

@ -49,9 +49,6 @@ public:
void set_default_termios();
void hang_up();
// ^Device
virtual mode_t required_mode() const override { return 0620; }
protected:
virtual KResultOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) = 0;
void set_size(unsigned short columns, unsigned short rows);

View file

@ -359,11 +359,6 @@ void VirtualConsole::set_cursor_style(VT::CursorStyle)
// Do nothing
}
String VirtualConsole::device_name() const
{
return String::formatted("tty{}", minor());
}
void VirtualConsole::echo(u8 ch)
{
m_console_impl.on_input(ch);

View file

@ -107,9 +107,6 @@ private:
// ^CharacterDevice
virtual StringView class_name() const override { return "VirtualConsole"; }
// ^Device
virtual String device_name() const override;
void set_active(bool);
void flush_dirty_lines();