]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/login/logind-user.h
Add __attribute__((const, pure, format)) in various places
[thirdparty/systemd.git] / src / login / logind-user.h
CommitLineData
90821c93
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
c2f1db8f 3#pragma once
90821c93
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2011 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
90821c93
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
90821c93 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
90821c93
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24typedef struct User User;
25
26#include "list.h"
27#include "util.h"
28#include "logind.h"
29#include "logind-session.h"
30
31typedef enum UserState {
0604381b
LP
32 USER_OFFLINE, /* Not logged in at all */
33 USER_LINGERING, /* Lingering has been enabled by the admin for this user */
34 USER_ONLINE, /* User logged in */
35 USER_ACTIVE, /* User logged in and has a session in the fg */
36 USER_CLOSING, /* User logged out, but processes still remain and lingering is not enabled */
90821c93
LP
37 _USER_STATE_MAX,
38 _USER_STATE_INVALID = -1
39} UserState;
40
41struct User {
42 Manager *manager;
43
44 uid_t uid;
45 gid_t gid;
46 char *name;
47
48 char *state_file;
49 char *runtime_path;
50 char *service;
51 char *cgroup_path;
52
53 Session *display;
54
55 dual_timestamp timestamp;
56
14c3baca 57 bool in_gc_queue:1;
9418f147 58 bool started:1;
14c3baca 59
90821c93 60 LIST_HEAD(Session, sessions);
14c3baca 61 LIST_FIELDS(User, gc_queue);
90821c93
LP
62};
63
64User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name);
65void user_free(User *u);
4a4b033f 66int user_check_gc(User *u, bool drop_not_started);
14c3baca 67void user_add_to_gc_queue(User *u);
90821c93
LP
68int user_start(User *u);
69int user_stop(User *u);
90821c93 70UserState user_get_state(User *u);
a185c5aa 71int user_get_idle_hint(User *u, dual_timestamp *t);
90821c93
LP
72int user_save(User *u);
73int user_load(User *u);
de07ab16 74int user_kill(User *u, int signo);
90821c93 75
3f49d45a
LP
76char *user_bus_path(User *s);
77
78extern const DBusObjectPathVTable bus_user_vtable;
79
da119395 80int user_send_signal(User *u, bool new_user);
9418f147 81int user_send_changed(User *u, const char *properties);
da119395 82
44a6b1b6
ZJS
83const char* user_state_to_string(UserState s) _const_;
84UserState user_state_from_string(const char *s) _pure_;