path: root/src/login/logind-user.h
diff options
authorLennart Poettering <>2013-07-02 01:46:30 +0200
committerLennart Poettering <>2013-07-02 01:48:55 +0200
commitfb6becb4436ae4078337011b2017ce294e7361cf (patch)
tree5e80cea85b91f039563907c830cd1d38f19c375c /src/login/logind-user.h
parent358712f3de33789b2d1293825f1add2c6f4b8e66 (diff)
logind: port over to use scopes+slices for all cgroup stuff
In order to prepare things for the single-writer cgroup scheme, let's make logind use systemd's own primitives for cgroup management. Every login user now gets his own private slice unit, in which his sessions live in a scope unit each. Also, add user@$UID.service to the same slice, and implicitly start it on first login.
Diffstat (limited to 'src/login/logind-user.h')
1 files changed, 7 insertions, 1 deletions
diff --git a/src/login/logind-user.h b/src/login/logind-user.h
index 16d798541..889f828c4 100644
--- a/src/login/logind-user.h
+++ b/src/login/logind-user.h
@@ -30,6 +30,7 @@ typedef struct User User;
typedef enum UserState {
USER_OFFLINE, /* Not logged in at all */
+ USER_OPENING, /* Is logging in */
USER_LINGERING, /* Lingering has been enabled by the admin for this user */
USER_ONLINE, /* User logged in */
USER_ACTIVE, /* User logged in and has a session in the fg */
@@ -47,16 +48,21 @@ struct User {
char *state_file;
char *runtime_path;
char *service;
- char *cgroup_path;
char *slice;
+ char *service_job;
+ char *slice_job;
Session *display;
dual_timestamp timestamp;
bool in_gc_queue:1;
bool started:1;
+ bool slice_created:1;
+ bool service_created:1;
LIST_HEAD(Session, sessions);
LIST_FIELDS(User, gc_queue);