mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:17:35 +00:00
Kernel: Add a method to determine the desired permissions of a Device
This method will be used later in DevFS, to set the appropriate permissions for each device node.
This commit is contained in:
parent
092a13211a
commit
18e77aa285
17 changed files with 50 additions and 0 deletions
|
@ -51,6 +51,9 @@ public:
|
||||||
|
|
||||||
const CircularQueue<char, 16384>& logbuffer() const { return m_logbuffer; }
|
const CircularQueue<char, 16384>& logbuffer() const { return m_logbuffer; }
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0666; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CircularQueue<char, 16384> m_logbuffer;
|
CircularQueue<char, 16384> m_logbuffer;
|
||||||
};
|
};
|
||||||
|
|
|
@ -44,6 +44,9 @@ public:
|
||||||
virtual int ioctl(FileDescription&, unsigned request, FlatPtr arg) override;
|
virtual int ioctl(FileDescription&, unsigned request, FlatPtr arg) override;
|
||||||
virtual KResultOr<Region*> mmap(Process&, FileDescription&, VirtualAddress preferred_vaddr, size_t offset, size_t, int prot, bool shared) override;
|
virtual KResultOr<Region*> mmap(Process&, FileDescription&, VirtualAddress preferred_vaddr, size_t offset, size_t, int prot, bool shared) override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0660; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual const char* class_name() const override { return "BXVGA"; }
|
virtual const char* class_name() const override { return "BXVGA"; }
|
||||||
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
||||||
|
|
|
@ -57,6 +57,8 @@ public:
|
||||||
uid_t uid() const { return m_uid; }
|
uid_t uid() const { return m_uid; }
|
||||||
uid_t gid() const { return m_gid; }
|
uid_t gid() const { return m_gid; }
|
||||||
|
|
||||||
|
virtual mode_t required_mode() const = 0;
|
||||||
|
|
||||||
virtual bool is_device() const override { return true; }
|
virtual bool is_device() const override { return true; }
|
||||||
virtual bool is_disk_device() const { return false; }
|
virtual bool is_disk_device() const { return false; }
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@ public:
|
||||||
virtual KResultOr<size_t> write(FileDescription&, size_t, const UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> write(FileDescription&, size_t, const UserOrKernelBuffer&, size_t) override;
|
||||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0600; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual const char* class_name() const override;
|
virtual const char* class_name() const override;
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,9 @@ public:
|
||||||
FullDevice();
|
FullDevice();
|
||||||
virtual ~FullDevice() override;
|
virtual ~FullDevice() override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0600; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
||||||
|
|
|
@ -74,6 +74,9 @@ public:
|
||||||
enable_irq();
|
enable_irq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0440; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^IRQHandler
|
// ^IRQHandler
|
||||||
virtual void handle_irq(const RegisterState&) override;
|
virtual void handle_irq(const RegisterState&) override;
|
||||||
|
|
|
@ -43,6 +43,9 @@ public:
|
||||||
virtual int ioctl(FileDescription&, unsigned request, FlatPtr arg) override;
|
virtual int ioctl(FileDescription&, unsigned request, FlatPtr arg) override;
|
||||||
virtual KResultOr<Region*> mmap(Process&, FileDescription&, VirtualAddress preferred_vaddr, size_t offset, size_t, int prot, bool shared) override;
|
virtual KResultOr<Region*> mmap(Process&, FileDescription&, VirtualAddress preferred_vaddr, size_t offset, size_t, int prot, bool shared) override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0660; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual const char* class_name() const override { return "MBVGA"; }
|
virtual const char* class_name() const override { return "MBVGA"; }
|
||||||
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
||||||
|
|
|
@ -39,6 +39,9 @@ public:
|
||||||
static void initialize();
|
static void initialize();
|
||||||
static NullDevice& the();
|
static NullDevice& the();
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0666; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
||||||
|
|
|
@ -61,6 +61,9 @@ public:
|
||||||
enable_irq();
|
enable_irq();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0440; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^IRQHandler
|
// ^IRQHandler
|
||||||
void handle_vmmouse_absolute_pointer();
|
void handle_vmmouse_absolute_pointer();
|
||||||
|
|
|
@ -36,6 +36,9 @@ public:
|
||||||
RandomDevice();
|
RandomDevice();
|
||||||
virtual ~RandomDevice() override;
|
virtual ~RandomDevice() override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0666; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
||||||
|
|
|
@ -53,6 +53,9 @@ public:
|
||||||
|
|
||||||
virtual const char* purpose() const override { return class_name(); }
|
virtual const char* purpose() const override { return class_name(); }
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0220; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^IRQHandler
|
// ^IRQHandler
|
||||||
virtual void handle_irq(const RegisterState&) override;
|
virtual void handle_irq(const RegisterState&) override;
|
||||||
|
|
|
@ -123,6 +123,9 @@ public:
|
||||||
DataReady = 0x01 << 0
|
DataReady = 0x01 << 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0620; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual const char* class_name() const override { return "SerialDevice"; }
|
virtual const char* class_name() const override { return "SerialDevice"; }
|
||||||
|
|
|
@ -36,6 +36,9 @@ public:
|
||||||
ZeroDevice();
|
ZeroDevice();
|
||||||
virtual ~ZeroDevice() override;
|
virtual ~ZeroDevice() override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0666; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
||||||
|
|
|
@ -53,6 +53,9 @@ public:
|
||||||
virtual KResultOr<size_t> write(FileDescription&, size_t, const UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> write(FileDescription&, size_t, const UserOrKernelBuffer&, size_t) override;
|
||||||
virtual bool can_write(const FileDescription&, size_t) const override;
|
virtual bool can_write(const FileDescription&, size_t) const override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0600; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
StorageDevice(const StorageController&, int, int, size_t, size_t);
|
StorageDevice(const StorageController&, int, int, size_t, size_t);
|
||||||
// ^DiskDevice
|
// ^DiskDevice
|
||||||
|
|
|
@ -48,6 +48,9 @@ public:
|
||||||
|
|
||||||
virtual String absolute_path(const FileDescription&) const override;
|
virtual String absolute_path(const FileDescription&) const override;
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0640; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
virtual KResultOr<size_t> read(FileDescription&, size_t, UserOrKernelBuffer&, size_t) override;
|
||||||
|
|
|
@ -55,6 +55,9 @@ public:
|
||||||
|
|
||||||
void notify_master_destroyed(Badge<MasterPTY>, unsigned index);
|
void notify_master_destroyed(Badge<MasterPTY>, unsigned index);
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0666; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ^CharacterDevice
|
// ^CharacterDevice
|
||||||
virtual const char* class_name() const override { return "PTYMultiplexer"; }
|
virtual const char* class_name() const override { return "PTYMultiplexer"; }
|
||||||
|
|
|
@ -67,6 +67,9 @@ public:
|
||||||
void set_default_termios();
|
void set_default_termios();
|
||||||
void hang_up();
|
void hang_up();
|
||||||
|
|
||||||
|
// ^Device
|
||||||
|
virtual mode_t required_mode() const override { return 0620; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ssize_t on_tty_write(const UserOrKernelBuffer&, ssize_t) = 0;
|
virtual ssize_t on_tty_write(const UserOrKernelBuffer&, ssize_t) = 0;
|
||||||
void set_size(unsigned short columns, unsigned short rows);
|
void set_size(unsigned short columns, unsigned short rows);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue