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