diff options
author | Liav A <liavalb@gmail.com> | 2021-09-17 11:52:51 +0300 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-10-09 12:07:56 +0200 |
commit | f8489da8ee7408d8a4a2dda163fb36867c16ad45 (patch) | |
tree | 399f0aa9a8fbd45a855994362ecf589a63ea2dd0 /Kernel/Firmware/PowerStateSwitch.h | |
parent | 7269ce15fce8acdf6711dc3a67e16d6f9c8ba67f (diff) | |
download | serenity-f8489da8ee7408d8a4a2dda163fb36867c16ad45.zip |
Kernel/SysFS: Provide a way to "truncate" and "set" mtime on inodes
Normally, trying to truncate a SysFSInode should result in EPERM error.
However, as suggested by Ali (@alimpfard), we can allow the PowerState
node to be "truncated" so one can open that file with O_TRUNC option.
Likewise, we also need to provide a way to set modified time on SysFS
inodes. For most inodes, we should return ENOTIMPL error, but for the
power state switch, we ignore the modified time setting and just return
KSuccess.
These fixes allow to do "echo -n 1 > /sys/firmware/power_state" in Shell
after gaining root permissions, to switch the power state.
Diffstat (limited to 'Kernel/Firmware/PowerStateSwitch.h')
-rw-r--r-- | Kernel/Firmware/PowerStateSwitch.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/Kernel/Firmware/PowerStateSwitch.h b/Kernel/Firmware/PowerStateSwitch.h index e96540f202..c35bd85ff4 100644 --- a/Kernel/Firmware/PowerStateSwitch.h +++ b/Kernel/Firmware/PowerStateSwitch.h @@ -25,6 +25,8 @@ public: static NonnullRefPtr<PowerStateSwitchNode> must_create(FirmwareSysFSDirectory&); virtual mode_t permissions() const override; virtual KResultOr<size_t> write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) override; + virtual KResult truncate(u64) override; + virtual KResult set_mtime(time_t) { return KSuccess; } private: PowerStateSwitchNode(FirmwareSysFSDirectory&); |