mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-03-30 11:11:05 -04:00
Add extended shared memory attach support
This provides an extended version of ‘create_pool’, called ‘create_pool2’, which allows the client to specify a 64-bit offset in the file to map at. As Wayland does not support 64-bit integers, the offset is passed as two 32-bit numbers. The intended use-case for this extension is when one needs to map a surface from a character special device, but it can also be used with regular files if one needs to map with a nonzero offset. Qubes OS needs the Wayland compositor to map the ‘/dev/xen/gntdev’ character device, which represents memory shared by a different Xen virtual machine. Currently, this can be accomplished by opening a separate instance of ‘/dev/xen/gntdev’ every time, but that is slightly wasteful. Until recently, it also on undocumented behavior in the kernel driver. This also requires libwayland-server to be built with 64-bit off_t, which should be supported on any reasonably modern system. A ‘_Static_assert’ will trip if off_t is not large enough. This also forbids resizing a pool of version 3 or later that is currently in use. On non-Linux systems, supporting pool resize requires holding the file descriptor open, which can lead to file descriptor exhaustion in the compositor. This change allows libwayland-server to close the file descriptor once the pool is first mapped. Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
This commit is contained in:
parent
aa2a6d560b
commit
d5cf2f5fc7
4 changed files with 144 additions and 42 deletions
|
|
@ -26,6 +26,7 @@ compiler_flags = [
|
|||
'-Wstrict-prototypes',
|
||||
'-Wmissing-prototypes',
|
||||
'-fvisibility=hidden',
|
||||
'-D_FILE_OFFSET_BITS=64',
|
||||
]
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue