]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/login/logind-session.h
systemctl: show main and control PID explicitly in cgroup-show
[thirdparty/systemd.git] / src / login / logind-session.h
CommitLineData
90821c93
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#ifndef foologindsessionhfoo
4#define foologindsessionhfoo
5
6/***
7 This file is part of systemd.
8
9 Copyright 2011 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
90821c93
LP
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 19 Lesser General Public License for more details.
90821c93 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
90821c93
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
25typedef struct Session Session;
26
27#include "list.h"
28#include "util.h"
29#include "logind.h"
30#include "logind-seat.h"
31#include "logind-user.h"
32
33typedef enum SessionType {
a91e4e53 34 SESSION_UNSPECIFIED,
3f49d45a 35 SESSION_TTY,
90821c93
LP
36 SESSION_X11,
37 _SESSION_TYPE_MAX,
38 _SESSION_TYPE_INVALID = -1
39} SessionType;
40
55efac6c
LP
41typedef enum SessionClass {
42 SESSION_USER,
43 SESSION_GREETER,
44 SESSION_LOCK_SCREEN,
45 _SESSION_CLASS_MAX,
46 _SESSION_CLASS_INVALID = -1
47} SessionClass;
48
de07ab16
LP
49typedef enum KillWho {
50 KILL_LEADER,
51 KILL_ALL,
52 _KILL_WHO_MAX,
53 _KILL_WHO_INVALID = -1
54} KillWho;
55
90821c93
LP
56struct Session {
57 Manager *manager;
58
59 char *id;
60 SessionType type;
55efac6c 61 SessionClass class;
90821c93
LP
62
63 char *state_file;
64
65 User *user;
66
67 dual_timestamp timestamp;
68
69 char *tty;
70 char *display;
71
72 bool remote;
3f49d45a 73 char *remote_user;
90821c93
LP
74 char *remote_host;
75
98a28fef
LP
76 char *service;
77
90821c93
LP
78 int vtnr;
79 Seat *seat;
80
81 pid_t leader;
3f49d45a 82 uint32_t audit_id;
90821c93 83
932e3ee7
LP
84 int fifo_fd;
85 char *fifo_path;
90821c93
LP
86
87 char *cgroup_path;
88 char **controllers, **reset_controllers;
89
a185c5aa
LP
90 bool idle_hint;
91 dual_timestamp idle_hint_timestamp;
92
3f49d45a 93 bool kill_processes;
14c3baca 94 bool in_gc_queue:1;
9418f147 95 bool started:1;
90821c93
LP
96
97 LIST_FIELDS(Session, sessions_by_user);
98 LIST_FIELDS(Session, sessions_by_seat);
14c3baca
LP
99
100 LIST_FIELDS(Session, gc_queue);
90821c93
LP
101};
102
103Session *session_new(Manager *m, User *u, const char *id);
104void session_free(Session *s);
4a4b033f 105int session_check_gc(Session *s, bool drop_not_started);
14c3baca 106void session_add_to_gc_queue(Session *s);
90821c93
LP
107int session_activate(Session *s);
108bool session_is_active(Session *s);
a185c5aa 109int session_get_idle_hint(Session *s, dual_timestamp *t);
bef422ae 110void session_set_idle_hint(Session *s, bool b);
932e3ee7
LP
111int session_create_fifo(Session *s);
112void session_remove_fifo(Session *s);
90821c93
LP
113int session_start(Session *s);
114int session_stop(Session *s);
115int session_save(Session *s);
116int session_load(Session *s);
de07ab16 117int session_kill(Session *s, KillWho who, int signo);
90821c93 118
3f49d45a
LP
119char *session_bus_path(Session *s);
120
121extern const DBusObjectPathVTable bus_session_vtable;
122
da119395 123int session_send_signal(Session *s, bool new_session);
9418f147 124int session_send_changed(Session *s, const char *properties);
88e3dc90 125int session_send_lock(Session *s, bool lock);
da119395 126
90821c93
LP
127const char* session_type_to_string(SessionType t);
128SessionType session_type_from_string(const char *s);
129
55efac6c
LP
130const char* session_class_to_string(SessionClass t);
131SessionClass session_class_from_string(const char *s);
132
de07ab16
LP
133const char *kill_who_to_string(KillWho k);
134KillWho kill_who_from_string(const char *s);
135
90821c93 136#endif