X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fsysview.h;fp=src%2Flibsystemd-terminal%2Fsysview.h;h=0000000000000000000000000000000000000000;hp=71e56e7ebfa4961c91b50b1082adefae325c0cde;hb=64f7a0d2d2c43234d624ec23fdd725171f9bc34c;hpb=e418908760d8b7826017b07b2a5d2e365152e7ae diff --git a/src/libsystemd-terminal/sysview.h b/src/libsystemd-terminal/sysview.h deleted file mode 100644 index 71e56e7eb..000000000 --- a/src/libsystemd-terminal/sysview.h +++ /dev/null @@ -1,162 +0,0 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - -/*** - This file is part of systemd. - - Copyright (C) 2014 David Herrmann - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see . -***/ - -/* - * System View - * The sysview interface scans and monitors the system for seats, sessions and - * devices. It basically mirrors the state of logind on the application side. - * It's meant as base for session services that require managed device access. - * The logind controller API is employed to allow unprivileged access to all - * devices of a user. - * Furthermore, the sysview interface can be used for system services that run - * in situations where logind is not available, but session-like services are - * needed. For instance, the initrd does not run logind but might require - * graphics access. It cannot run session services, though. The sysview - * interface pretends that a session is available and provides the same - * interface as to normal session services. - */ - -#pragma once - -#include -#include -#include - -typedef struct sysview_event sysview_event; -typedef struct sysview_device sysview_device; -typedef struct sysview_session sysview_session; -typedef struct sysview_seat sysview_seat; -typedef struct sysview_context sysview_context; - -/* - * Events - */ - -enum { - SYSVIEW_EVENT_SETTLE, - - SYSVIEW_EVENT_SEAT_ADD, - SYSVIEW_EVENT_SEAT_REMOVE, - - SYSVIEW_EVENT_SESSION_FILTER, - SYSVIEW_EVENT_SESSION_ADD, - SYSVIEW_EVENT_SESSION_REMOVE, - SYSVIEW_EVENT_SESSION_ATTACH, - SYSVIEW_EVENT_SESSION_DETACH, - SYSVIEW_EVENT_SESSION_REFRESH, - SYSVIEW_EVENT_SESSION_CONTROL, -}; - -struct sysview_event { - unsigned int type; - - union { - struct { - sysview_seat *seat; - } seat_add, seat_remove; - - struct { - const char *id; - const char *seatid; - const char *username; - unsigned int uid; - } session_filter; - - struct { - sysview_session *session; - } session_add, session_remove; - - struct { - sysview_session *session; - sysview_device *device; - } session_attach, session_detach; - - struct { - sysview_session *session; - sysview_device *device; - struct udev_device *ud; - } session_refresh; - - struct { - sysview_session *session; - int error; - } session_control; - }; -}; - -typedef int (*sysview_event_fn) (sysview_context *c, void *userdata, sysview_event *e); - -/* - * Devices - */ - -enum { - SYSVIEW_DEVICE_EVDEV, - SYSVIEW_DEVICE_DRM, - SYSVIEW_DEVICE_CNT -}; - -const char *sysview_device_get_name(sysview_device *device); -unsigned int sysview_device_get_type(sysview_device *device); -struct udev_device *sysview_device_get_ud(sysview_device *device); - -/* - * Sessions - */ - -void sysview_session_set_userdata(sysview_session *session, void *userdata); -void *sysview_session_get_userdata(sysview_session *session); - -const char *sysview_session_get_name(sysview_session *session); -sysview_seat *sysview_session_get_seat(sysview_session *session); - -int sysview_session_take_control(sysview_session *session); -void sysview_session_release_control(sysview_session *session); - -/* - * Seats - */ - -const char *sysview_seat_get_name(sysview_seat *seat); -int sysview_seat_switch_to(sysview_seat *seat, uint32_t nr); - -/* - * Contexts - */ - -enum { - SYSVIEW_CONTEXT_SCAN_LOGIND = (1 << 0), - SYSVIEW_CONTEXT_SCAN_EVDEV = (1 << 1), - SYSVIEW_CONTEXT_SCAN_DRM = (1 << 2), -}; - -int sysview_context_new(sysview_context **out, - unsigned int flags, - sd_event *event, - sd_bus *sysbus, - struct udev *ud); -sysview_context *sysview_context_free(sysview_context *c); - -DEFINE_TRIVIAL_CLEANUP_FUNC(sysview_context*, sysview_context_free); - -bool sysview_context_is_running(sysview_context *c); -int sysview_context_start(sysview_context *c, sysview_event_fn event_fn, void *userdata); -void sysview_context_stop(sysview_context *c);