1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2011 Lennart Poettering
8 typedef struct User User
;
10 #include "conf-parser.h"
14 typedef enum UserState
{
15 USER_OFFLINE
, /* Not logged in at all */
16 USER_OPENING
, /* Is logging in */
17 USER_LINGERING
, /* Lingering has been enabled by the admin for this user */
18 USER_ONLINE
, /* User logged in */
19 USER_ACTIVE
, /* User logged in and has a session in the fg */
20 USER_CLOSING
, /* User logged out, but processes still remain and lingering is not enabled */
22 _USER_STATE_INVALID
= -1
40 dual_timestamp timestamp
;
46 LIST_HEAD(Session
, sessions
);
47 LIST_FIELDS(User
, gc_queue
);
50 int user_new(User
**out
, Manager
*m
, uid_t uid
, gid_t gid
, const char *name
);
51 User
*user_free(User
*u
);
53 DEFINE_TRIVIAL_CLEANUP_FUNC(User
*, user_free
);
55 bool user_may_gc(User
*u
, bool drop_not_started
);
56 void user_add_to_gc_queue(User
*u
);
57 int user_start(User
*u
);
58 int user_stop(User
*u
, bool force
);
59 int user_finalize(User
*u
);
60 UserState
user_get_state(User
*u
);
61 int user_get_idle_hint(User
*u
, dual_timestamp
*t
);
62 int user_save(User
*u
);
63 int user_load(User
*u
);
64 int user_kill(User
*u
, int signo
);
65 int user_check_linger_file(User
*u
);
66 void user_elect_display(User
*u
);
68 extern const sd_bus_vtable user_vtable
[];
69 int user_node_enumerator(sd_bus
*bus
, const char *path
, void *userdata
, char ***nodes
, sd_bus_error
*error
);
70 int user_object_find(sd_bus
*bus
, const char *path
, const char *interface
, void *userdata
, void **found
, sd_bus_error
*error
);
71 char *user_bus_path(User
*s
);
73 int user_send_signal(User
*u
, bool new_user
);
74 int user_send_changed(User
*u
, const char *properties
, ...) _sentinel_
;
76 const char* user_state_to_string(UserState s
) _const_
;
77 UserState
user_state_from_string(const char *s
) _pure_
;
79 int bus_user_method_terminate(sd_bus_message
*message
, void *userdata
, sd_bus_error
*error
);
80 int bus_user_method_kill(sd_bus_message
*message
, void *userdata
, sd_bus_error
*error
);
82 CONFIG_PARSER_PROTOTYPE(config_parse_compat_user_tasks_max
);