summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9901522)
elogind has to run on any system, no matter which init system is in
control of the cgroups. So instead of hardcoding "name=foo",
configure now greps 1: in /proc/self/cgroup - which is hopefully
the right choice. (Well, to be honest, if it isn't, something is
really wrong with the running system...)
systemsleepdir=$(pkglibexecdir)/sleep.d
systemshutdowndir=$(pkglibexecdir)/shutdown.d
systemsleepdir=$(pkglibexecdir)/sleep.d
systemshutdowndir=$(pkglibexecdir)/shutdown.d
+CGROUP_CONTROLLER=@cgroup_controller@
PKTTYAGENT=$(bindir)/pkttyagent
# Our own, non-special dirs
PKTTYAGENT=$(bindir)/pkttyagent
# Our own, non-special dirs
# And these are the special ones for /
rootprefix=@rootprefix@
# And these are the special ones for /
rootprefix=@rootprefix@
rootbindir=$(rootprefix)/bin
rootlibexecdir=$(rootprefix)/lib/elogind
rootbindir=$(rootprefix)/bin
rootlibexecdir=$(rootprefix)/lib/elogind
EXTRA_DIST =
BUILT_SOURCES =
INSTALL_EXEC_HOOKS =
EXTRA_DIST =
BUILT_SOURCES =
INSTALL_EXEC_HOOKS =
AM_CPPFLAGS = \
-include $(top_builddir)/config.h \
-DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
AM_CPPFLAGS = \
-include $(top_builddir)/config.h \
-DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \
+ -DELOGIND_CGROUP_CONTROLLER=\"$(CGROUP_CONTROLLER)\" \
-DELOGIND_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/elogind-cgroups-agent\" \
-DROOTPREFIX=\"$(rootprefix)\" \
-DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \
-DELOGIND_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/elogind-cgroups-agent\" \
-DROOTPREFIX=\"$(rootprefix)\" \
-DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \
AC_MSG_ERROR([*** gperf not found])
fi
AC_MSG_ERROR([*** gperf not found])
fi
+
+# ------------------------------------------------------------------------------
+# Find running cgroup controller
+with_cgroupctrl=
+AS_IF( [test -f /proc/self/cgroup],
+ [with_cgroupctrl=`grep "^1:" /proc/self/cgroup | cut -d ':' -f 2`])
+AS_IF( [test -z "$with_cgroupctrl"],
+ AC_MSG_ERROR([No running cgroup controller found]))
+
+
# ------------------------------------------------------------------------------
address_sanitizer_cflags=
address_sanitizer_cppflags=
# ------------------------------------------------------------------------------
address_sanitizer_cflags=
address_sanitizer_cppflags=
AC_SUBST([pamconfdir], [$with_pamconfdir])
AC_SUBST([rootprefix], [$with_rootprefix])
AC_SUBST([rootlibdir], [$with_rootlibdir])
AC_SUBST([pamconfdir], [$with_pamconfdir])
AC_SUBST([rootprefix], [$with_rootprefix])
AC_SUBST([rootlibdir], [$with_rootlibdir])
+AC_SUBST([cgroup_controller], [$with_cgroupctrl])
AC_CONFIG_FILES([
Makefile
AC_CONFIG_FILES([
Makefile
test coverage: ${have_coverage}
Split /usr: ${enable_split_usr}
extra debugging: ${enable_debug}
test coverage: ${have_coverage}
Split /usr: ${enable_split_usr}
extra debugging: ${enable_debug}
+ cgroup controller: ${with_cgroupctrl}
prefix: ${prefix}
rootprefix: ${with_rootprefix}
prefix: ${prefix}
rootprefix: ${with_rootprefix}
* the unified hierarchy. */
if (streq(controller, ELOGIND_CGROUP_CONTROLLER))
* the unified hierarchy. */
if (streq(controller, ELOGIND_CGROUP_CONTROLLER))
if (startswith(controller, "name="))
return -EOPNOTSUPP;
if (startswith(controller, "name="))
return -EOPNOTSUPP;
dn = controller_to_dirname(controller);
cc = strjoina("/sys/fs/cgroup/", dn);
dn = controller_to_dirname(controller);
cc = strjoina("/sys/fs/cgroup/", dn);
- if (laccess(cc, F_OK) < 0)
- return -errno;
+ if (laccess(cc, F_OK) < 0)
+ return -errno;
if (unified < 0)
return unified;
if (unified == 0) {
if (unified < 0)
return unified;
if (unified == 0) {
- if (controller) {
- if (!cg_controller_is_valid(controller))
- return -EINVAL;
- } else
- controller = ELOGIND_CGROUP_CONTROLLER;
+ if (controller) {
+ if (!cg_controller_is_valid(controller))
+ return -EINVAL;
+ } else
+ controller = ELOGIND_CGROUP_CONTROLLER;
cs = strlen(controller);
}
cs = strlen(controller);
}
continue;
} else {
char *l;
continue;
} else {
char *l;
- size_t k;
- const char *word, *state;
- bool found = false;
+ size_t k;
+ const char *word, *state;
+ bool found = false;
- l = strchr(line, ':');
- if (!l)
- continue;
+ l = strchr(line, ':');
+ if (!l)
+ continue;
- l++;
- e = strchr(l, ':');
- if (!e)
- continue;
+ l++;
+ e = strchr(l, ':');
+ if (!e)
+ continue;
- *e = 0;
- FOREACH_WORD_SEPARATOR(word, k, l, ",", state) {
- if (k == cs && memcmp(word, controller, cs) == 0) {
- found = true;
- break;
+ *e = 0;
+ FOREACH_WORD_SEPARATOR(word, k, l, ",", state) {
+ if (k == cs && memcmp(word, controller, cs) == 0) {
+ found = true;
+ break;
+ }
- if (!found)
- continue;
+ if (!found)
+ continue;
* the watchdog pings will keep the loop busy. */
#define DEFAULT_EXIT_USEC (30*USEC_PER_SEC)
* the watchdog pings will keep the loop busy. */
#define DEFAULT_EXIT_USEC (30*USEC_PER_SEC)
-#define ELOGIND_CGROUP_CONTROLLER "name=elogind"
+#ifndef ELOGIND_CGROUP_CONTROLLER
+# define ELOGIND_CGROUP_CONTROLLER "name=elogind"
+#endif
#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
#define SIGNALS_IGNORE SIGPIPE
#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
#define SIGNALS_IGNORE SIGPIPE