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>
33 #include "cgroup-util.h"
37 * recreate VTs when disallocated
41 * D-Bus method: AttachDevice(seat, device);
42 * D-Bus method: PermitLinger(user, bool b);
44 * non-local X11 server
45 * reboot/shutdown halt management
48 typedef struct Manager Manager
;
50 #include "logind-device.h"
51 #include "logind-seat.h"
52 #include "logind-session.h"
53 #include "logind-user.h"
63 LIST_HEAD(Seat
, seat_gc_queue
);
64 LIST_HEAD(Session
, session_gc_queue
);
65 LIST_HEAD(User
, user_gc_queue
);
68 struct udev_monitor
*udev_monitor
;
71 int console_active_fd
;
82 char **kill_only_users
, **kill_exclude_users
;
84 bool kill_user_processes
;
86 unsigned long session_counter
;
91 Manager
*manager_new(void);
92 void manager_free(Manager
*m
);
94 int manager_add_device(Manager
*m
, const char *sysfs
, Device
**_device
);
95 int manager_add_seat(Manager
*m
, const char *id
, Seat
**_seat
);
96 int manager_add_session(Manager
*m
, User
*u
, const char *id
, Session
**_session
);
97 int manager_add_user(Manager
*m
, uid_t uid
, gid_t gid
, const char *name
, User
**_user
);
98 int manager_add_user_by_name(Manager
*m
, const char *name
, User
**_user
);
99 int manager_add_user_by_uid(Manager
*m
, uid_t uid
, User
**_user
);
101 int manager_process_device(Manager
*m
, struct udev_device
*d
);
102 int manager_dispatch_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
);
118 int manager_get_idle_hint(Manager
*m
, dual_timestamp
*t
);
120 bool x11_display_is_local(const char *display
);
122 extern const DBusObjectPathVTable bus_manager_vtable
;
124 DBusHandlerResult
bus_message_filter(DBusConnection
*c
, DBusMessage
*message
, void *userdata
);
126 int manager_send_changed(Manager
*manager
, const char *properties
);