1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
7 This file is part of systemd.
9 Copyright 2011 Lennart Poettering
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
27 #include <dbus/dbus.h>
34 #include "cgroup-util.h"
36 typedef struct Manager Manager
;
38 #include "logind-device.h"
39 #include "logind-seat.h"
40 #include "logind-session.h"
41 #include "logind-user.h"
51 LIST_HEAD(Seat
, seat_gc_queue
);
52 LIST_HEAD(Session
, session_gc_queue
);
53 LIST_HEAD(User
, user_gc_queue
);
56 struct udev_monitor
*udev_seat_monitor
, *udev_vcsa_monitor
;
61 int console_active_fd
;
70 char **controllers
, **reset_controllers
;
72 char **kill_only_users
, **kill_exclude_users
;
74 bool kill_user_processes
;
76 unsigned long session_counter
;
90 Manager
*manager_new(void);
91 void manager_free(Manager
*m
);
93 int manager_add_device(Manager
*m
, const char *sysfs
, Device
**_device
);
94 int manager_add_seat(Manager
*m
, const char *id
, Seat
**_seat
);
95 int manager_add_session(Manager
*m
, User
*u
, const char *id
, Session
**_session
);
96 int manager_add_user(Manager
*m
, uid_t uid
, gid_t gid
, const char *name
, User
**_user
);
97 int manager_add_user_by_name(Manager
*m
, const char *name
, User
**_user
);
98 int manager_add_user_by_uid(Manager
*m
, uid_t uid
, User
**_user
);
100 int manager_process_seat_device(Manager
*m
, struct udev_device
*d
);
101 int manager_dispatch_seat_udev(Manager
*m
);
102 int manager_dispatch_vcsa_udev(Manager
*m
);
103 int manager_dispatch_console(Manager
*m
);
105 int manager_enumerate_devices(Manager
*m
);
106 int manager_enumerate_seats(Manager
*m
);
107 int manager_enumerate_sessions(Manager
*m
);
108 int manager_enumerate_users(Manager
*m
);
110 int manager_startup(Manager
*m
);
111 int manager_run(Manager
*m
);
112 int manager_spawn_autovt(Manager
*m
, int vtnr
);
114 void manager_cgroup_notify_empty(Manager
*m
, const char *cgroup
);
116 void manager_gc(Manager
*m
, bool drop_not_started
);
118 int manager_get_idle_hint(Manager
*m
, dual_timestamp
*t
);
120 int manager_get_session_by_cgroup(Manager
*m
, const char *cgroup
, Session
**session
);
121 int manager_get_session_by_pid(Manager
*m
, pid_t pid
, Session
**session
);
123 extern const DBusObjectPathVTable bus_manager_vtable
;
125 DBusHandlerResult
bus_message_filter(DBusConnection
*c
, DBusMessage
*message
, void *userdata
);
127 int manager_send_changed(Manager
*manager
, const char *properties
);
129 /* gperf lookup function */
130 const struct ConfigPerfItem
* logind_gperf_lookup(const char *key
, unsigned length
);