From fb6becb4436ae4078337011b2017ce294e7361cf Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 2 Jul 2013 01:46:30 +0200 Subject: 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. --- src/login/logind-session.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/login/logind-session.h') diff --git a/src/login/logind-session.h b/src/login/logind-session.h index 60597c2362..e2a46d5907 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -31,9 +31,10 @@ typedef enum KillWho KillWho; #include "logind-user.h" typedef enum SessionState { + SESSION_OPENING, /* Session scope is being created */ SESSION_ONLINE, /* Logged in */ SESSION_ACTIVE, /* Logged in and in the fg */ - SESSION_CLOSING, /* Logged out, but processes still remain */ + SESSION_CLOSING, /* Logged out, but scope is still there */ _SESSION_STATE_MAX, _SESSION_STATE_INVALID = -1 } SessionState; @@ -81,9 +82,10 @@ struct Session { bool remote; char *remote_user; char *remote_host; - char *service; - char *slice; + + char *scope; + char *scope_job; int vtnr; Seat *seat; @@ -94,16 +96,14 @@ struct Session { int fifo_fd; char *fifo_path; - char *cgroup_path; - char **controllers, **reset_controllers; - bool idle_hint; dual_timestamp idle_hint_timestamp; - bool kill_processes; bool in_gc_queue:1; bool started:1; + DBusMessage *create_message; + LIST_FIELDS(Session, sessions_by_user); LIST_FIELDS(Session, sessions_by_seat); @@ -138,6 +138,8 @@ int session_send_changed(Session *s, const char *properties); int session_send_lock(Session *s, bool lock); int session_send_lock_all(Manager *m, bool lock); +int session_send_create_reply(Session *s, DBusError *error); + const char* session_state_to_string(SessionState t) _const_; SessionState session_state_from_string(const char *s) _pure_; -- cgit v1.2.3-54-g00ecf