VOOZH about

URL: http://anzwix.com/a/systemd/LogindImplementGenericMultisession

⇱ Anzwix / systemd / logind: implement generic multi-session


Anzwix

  1. Latest News
  2. Linux Kernel: Linux 7.2-rc1
  3. avutil/int128: add header for 128-bit integers
  4. swscale/rational64: add 64-bit rational type
  5. avfilter/vf_scale_cuda: add `use_filters` option
  6. swscale/format: add support for AV_PIX_FMT_PAL8
  7. Linux Kernel: Linux 7.1
  8. swscale: add new SwsContext.backends option
  9. avcodec/itut35: add support for HDR Vivid


  1. Latest News (cont.)
  2. Linux Kernel: Linux 7.1-rc6
  3. avcodec/bsf: add dovi_split BSF
  4. avformat/mov: add support for vdep based tref
  5. Arch64: Add support for SVE2 ifuncs
  6. Linux Kernel: Linux 7.1-rc5
  7. swscale/aarch64: add NEON yuv->rgb16 fast paths
  8. avformat/webp: add Animated WebP demuxer
  9. apv_decode: add a Vulkan hwaccel
  10. Linux Kernel: Linux 7.1-rc4
  11. Linux Kernel: Linux 7.1-rc3
  12. Linux Kernel: Linux 7.1-rc2

Featured content is also available via:

👁 Image
👁 Image
👁 Image

logind: implement generic multi-session

System Internals / systemd - David Herrmann [gmail.com] - 17 September 2013 17:15 UTC

This enables the multi-session capability for seats that don't have VTs. For legacy seats with VTs, everything stays the same. However, all other seats now also get the multi-session capability.

The only feature that was missing was session-switching. As logind can force a session-switch and signal that via the "Active" property, we only need a way to allow synchronized/delayed session switches. Compositors need to cleanup some devices before acknowledging the session switch. Therefore, we use the session-devices to give compositors a chance to block a session-switch until they cleaned everything up.

If you activate a session on a seat without VTs, we send a PauseDevice signal to the active session for every active device. Only once the session acknowledged all these with a PauseDeviceComplete() call, we perform the final session switch.

One important note is that delayed session-switching is meant for backwards compatibility. New compositors or other sessions should really try to deal correctly with forced session switches! They only need to handle EACCES/EPERM from syscalls and treat them as "PauseDevice" signal.

Following logind patches will add a timeout to session-switches which forces the switch if the active session does not react in a timely fashion. Moreover, explicit ForceActivate() calls might also be supported. Hence, sessions must not crash if their devices get paused.

d7bd01b logind: implement generic multi-session
src/login/logind-seat.c | 15 +++++++++++++++
src/login/logind-seat.h | 2 ++
src/login/logind-session-device.c | 28 ++++++++++++++++++++++++++++
src/login/logind-session-device.h | 1 +
src/login/logind-session.c | 31 ++++++++++++++++++++++++++-----
5 files changed, 72 insertions(+), 5 deletions(-)

Upstream: github.com


Legal Disclaimer & Disclosure | Contact Us
Copyright © 2010 - 2026 by Phoronix Media. All rights reserved.
All trademarks and copyrights used are properties of their respective owners.
Powered by the Phoronix Content Management System (PHXCMS-8).