+ r = sd_event_add_io(m->event, &m->console_active_event_source, m->console_active_fd, 0, manager_dispatch_console, m);
+ if (r < 0) {
+ log_error("Failed to watch foreground console");
+ return r;
+ }
+
+ /*
+ * SIGRTMIN is used as global VT-release signal, SIGRTMIN + 1 is used
+ * as VT-acquire signal. We ignore any acquire-events (yes, we still
+ * have to provide a valid signal-number for it!) and acknowledge all
+ * release events immediately.
+ */
+
+ if (SIGRTMIN + 1 > SIGRTMAX) {
+ log_error("Not enough real-time signals available: %u-%u", SIGRTMIN, SIGRTMAX);
+ return -EINVAL;
+ }
+
+ r = ignore_signals(SIGRTMIN + 1, -1);
+ if (r < 0) {
+ log_error("Cannot ignore SIGRTMIN + 1: %s", strerror(-r));
+ return r;
+ }
+
+ r = sigprocmask_many(SIG_BLOCK, SIGRTMIN, -1);
+ if (r < 0) {
+ log_error("Cannot block SIGRTMIN: %s", strerror(-r));
+ return r;
+ }
+
+ r = sd_event_add_signal(m->event, NULL, SIGRTMIN, manager_vt_switch, m);
+ if (r < 0)
+ return r;