ladybird/Kernel/API
Liav A 977aa81310 Kernel+Userland: Add ioctl to set process ownership of DisplayConnector
Now that the infrastructure of the Graphics subsystem is quite stable,
it is time to try to fix a long-standing problem, which is the lack of
locking on display connector devices. Reading and writing from multiple
processes to a framebuffer controlled by the display connector is not a
huge problem - it could be solved with POSIX locking.

The real problem is some program that will try to do ioctl operations on
a display connector without the WindowServer being aware of that which
can lead to very bad situations, for example - assuming a framebuffer is
encoded at a known resolution and certain display timings, but another
process changed the ModeSetting of the display connector, leading to
inconsistency on the properties of the current ModeSetting.

To solve this, there's a new "master" ioctl to take "ownership" and
another one to release that ownership of a display connector device. To
ensure we will not hold a Process object forever just because it has an
ownership over a display connector, we hold it with a weak reference,
and if the process is gone, someone else can take an ownership.
2022-07-23 10:42:08 +01:00
..
POSIX Kernel: Clean up sys$futex and add support for cross-process futexes 2022-07-21 16:39:22 +02:00
Device.h Kernel: Mark serenity_dev_ functions as static 2022-03-18 11:59:35 +00:00
DeviceEvent.h Kernel/Devices: Introduce the Device Control Device 2022-01-23 00:38:02 +00:00
Graphics.h Kernel+Userland: Add ioctl to set process ownership of DisplayConnector 2022-07-23 10:42:08 +01:00
InodeWatcherEvent.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
InodeWatcherFlags.h Kernel: Implement multi-watch InodeWatcher :^) 2021-05-12 22:38:20 +02:00
KeyCode.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
MemoryLayout.h Kernel: Move userspace virtual address range base to 0x10000 2021-12-22 00:02:36 -08:00
MousePacket.h Kernel: Add horizontal mouse scroll support 2022-01-20 10:37:52 +01:00
Syscall.h Kernel+LibC: Add posix_fallocate syscall 2022-07-15 12:42:43 +02:00
SyscallString.h Kernel: Stop requiring working malloc for syscall.h includes 2022-05-02 12:44:34 +02:00
TimePage.h Kernel: Add CLOCK_MONOTONIC_COARSE to the kernel time page 2021-08-10 21:51:05 +02:00
VirGL.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00