ladybird/Kernel
Liav A 8d0dbdeaac Kernel+Userland: Introduce a new way to reboot and poweroff the machine
This change removes the halt and reboot syscalls, and create a new
mechanism to change the power state of the machine.
Instead of how power state was changed until now, put a SysFS node as
writable only for the superuser, that with a defined value, can result
in either reboot or poweroff.
In the future, a power group can be assigned to this node (which will be
the GroupID responsible for power management).

This opens an opportunity to permit to shutdown/reboot without superuser
permissions, so in the future, a userspace daemon can take control of
this node to perform power management operations without superuser
permissions, if we enforce different UserID/GroupID on that node.
2021-09-12 11:52:16 +02:00
..
API Kernel+Userland: Introduce a new way to reboot and poweroff the machine 2021-09-12 11:52:16 +02:00
Arch Kernel: Move ACPI and BIOS code into the new Firmware directory 2021-09-12 11:52:16 +02:00
Bus Kernel: Move ACPI and BIOS code into the new Firmware directory 2021-09-12 11:52:16 +02:00
Devices Kernel: Move ACPI and BIOS code into the new Firmware directory 2021-09-12 11:52:16 +02:00
FileSystem Kernel/SysFS: Make it possible to have custom permissions for nodes 2021-09-12 11:52:16 +02:00
Firmware Kernel+Userland: Introduce a new way to reboot and poweroff the machine 2021-09-12 11:52:16 +02:00
Graphics Kernel/Devices: Defer creation of SysFS component after the constructor 2021-09-11 11:41:14 +02:00
Heap
Interrupts Kernel: Move ACPI and BIOS code into the new Firmware directory 2021-09-12 11:52:16 +02:00
Library Kernel: Stop leaking TmpFS inodes 2021-09-07 22:16:25 +02:00
Locking AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
Memory Kernel: Fix off-by-one in Memory::is_user_range() check 2021-09-11 02:34:55 +02:00
Net AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
Prekernel Kernel: Don't link Prekernel against libsupc++ 2021-09-08 04:23:17 +00:00
Storage Kernel/Devices: Defer creation of SysFS component after the constructor 2021-09-11 11:41:14 +02:00
Syscalls Kernel+Userland: Introduce a new way to reboot and poweroff the machine 2021-09-12 11:52:16 +02:00
Tasks Kernel: Store process names as KString 2021-09-07 13:53:14 +02:00
Time Kernel: Move ACPI and BIOS code into the new Firmware directory 2021-09-12 11:52:16 +02:00
TTY Kernel/Devices: Defer creation of SysFS component after the constructor 2021-09-11 11:41:14 +02:00
AddressSanitizer.cpp
AddressSanitizer.h
Assertions.h
AtomicEdgeAction.h
BootInfo.h
CMakeLists.txt Kernel+Userland: Introduce a new way to reboot and poweroff the machine 2021-09-12 11:52:16 +02:00
CMOS.cpp
CMOS.h
CommandLine.cpp Kernel/CommandLine: Verify ACPI feature level cannot have invalid string 2021-09-10 22:01:23 +02:00
CommandLine.h Kernel: Use KString all the way in sys$execve() 2021-09-09 21:25:10 +02:00
ConsoleDevice.cpp Kernel/Devices: Defer creation of SysFS component after the constructor 2021-09-11 11:41:14 +02:00
ConsoleDevice.h Kernel/Devices: Remove required_mode and device_name methods 2021-09-08 00:42:20 +02:00
Coredump.cpp Kernel: Use KString all the way in sys$execve() 2021-09-09 21:25:10 +02:00
Coredump.h Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
Debug.h.in
DoubleBuffer.cpp Kernel: Remove KBuffer::is_null() and bogus call sites :^) 2021-09-07 16:00:39 +02:00
DoubleBuffer.h Kernel: Make DoubleBuffer::try() return KResultOr 2021-09-07 13:53:14 +02:00
embedmap.sh
Forward.h Kernel: Rename DevFS => DevTmpFS 2021-09-08 00:42:20 +02:00
FutexQueue.cpp
FutexQueue.h
GlobalProcessExposed.cpp Kernel+Userland: Remove loadable kernel moduless 2021-09-11 19:05:00 +02:00
init.cpp Kernel: Unify BIOS and ACPI components in the SysFS firmware directory 2021-09-12 11:52:16 +02:00
IO.h
KBuffer.h Kernel: Add KBuffer::bytes() and use it 2021-09-08 20:16:00 +02:00
KBufferBuilder.cpp Kernel: Make it possible for KBufferBuilder creation to fail 2021-09-07 15:54:23 +02:00
KBufferBuilder.h Kernel: Add KBuffer::bytes() and use it 2021-09-08 20:16:00 +02:00
KLexicalPath.cpp Kernel: Make KString factories return KResultOr + use TRY() everywhere 2021-09-06 19:25:36 +02:00
KLexicalPath.h Kernel: Make KString factories return KResultOr + use TRY() everywhere 2021-09-06 19:25:36 +02:00
kprintf.cpp Kernel: Add kernelearlyputstr and use it in dbgln in very-early boot 2021-09-10 22:58:08 +03:00
kstdio.h Kernel: Add kernelearlyputstr and use it in dbgln in very-early boot 2021-09-10 22:58:08 +03:00
KString.cpp Kernel: Make KString factories return KResultOr + use TRY() everywhere 2021-09-06 19:25:36 +02:00
KString.h Kernel: Remove redundant [[nodiscard]] on KResult return values 2021-09-07 01:18:02 +02:00
KSyms.cpp Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
KSyms.h
linker.ld
MiniStdLib.cpp Kernel: Build MiniStdLib.cpp in aarch64 builds 2021-09-07 20:15:15 +01:00
mkmap.sh
Multiboot.h
Panic.cpp Kernel: Track when a thread is in the middle of crashing 2021-09-07 13:16:01 +02:00
Panic.h
PerformanceEventBuffer.cpp Kernel: Make PerformanceEventBuffer::to_json() return a KResult 2021-09-07 22:16:25 +02:00
PerformanceEventBuffer.h Kernel: Make PerformanceEventBuffer::to_json() return a KResult 2021-09-07 22:16:25 +02:00
PerformanceManager.h
PhysicalAddress.h
Process.cpp Kernel+Userland: Remove loadable kernel moduless 2021-09-11 19:05:00 +02:00
Process.h Kernel+Userland: Introduce a new way to reboot and poweroff the machine 2021-09-12 11:52:16 +02:00
ProcessExposed.cpp Kernel: Make it possible for KBufferBuilder creation to fail 2021-09-07 15:54:23 +02:00
ProcessExposed.h Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
ProcessGroup.cpp
ProcessGroup.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
ProcessProcFSTraits.cpp Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
ProcessSpecificExposed.cpp Kernel: Make PerformanceEventBuffer::to_json() return a KResult 2021-09-07 22:16:25 +02:00
Random.cpp
Random.h
RTC.cpp
RTC.h
SanCov.cpp
Scheduler.cpp AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
Scheduler.h
Sections.h
StdLib.cpp Kernel: Remove redundant [[nodiscard]] on KResult return values 2021-09-07 01:18:02 +02:00
StdLib.h Kernel: Remove redundant [[nodiscard]] on KResult return values 2021-09-07 01:18:02 +02:00
Syscall.cpp
Thread.cpp Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
Thread.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
ThreadBlockers.cpp Kernel: Rename FileDescription => OpenFileDescription 2021-09-07 13:53:14 +02:00
ThreadTracer.cpp
ThreadTracer.h Kernel: Use KResultOr and TRY() for ThreadTracer 2021-09-07 14:48:13 +02:00
TimerQueue.cpp Kernel: Remove a bunch of unused TimerQueue functions 2021-09-07 22:16:25 +02:00
TimerQueue.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
UBSanitizer.cpp
UnixTypes.h
UserOrKernelBuffer.cpp Kernel: Make UserOrKernelBuffer return KResult from read/write/memset 2021-09-07 13:53:14 +02:00
UserOrKernelBuffer.h Kernel: Make UserOrKernelBuffer return KResult from read/write/memset 2021-09-07 13:53:14 +02:00
VirtualAddress.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp Kernel: Store process names as KString 2021-09-07 13:53:14 +02:00
WorkQueue.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00