diff options
Diffstat (limited to 'dev-libs/libcgroup/files/cgconfig.initd-r2')
-rw-r--r-- | dev-libs/libcgroup/files/cgconfig.initd-r2 | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/dev-libs/libcgroup/files/cgconfig.initd-r2 b/dev-libs/libcgroup/files/cgconfig.initd-r2 new file mode 100644 index 000000000000..aaf3ea88031b --- /dev/null +++ b/dev-libs/libcgroup/files/cgconfig.initd-r2 @@ -0,0 +1,53 @@ +#!/sbin/openrc-run +# Copyright 1999-2023 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +CGCONFIGPARSER="/usr/sbin/cgconfigparser" +CGCLASSIFY="/usr/bin/cgclassify" +: "${CG_CONFIGFILE:=/etc/cgroup/cgconfig.conf}" +: "${CG_CONFIGDIR:=/etc/cgroup/cgconfig.d}" +description="Control Group Configuration Service" + +start() +{ + ebegin "Setting up CGroups" + "${CGCONFIGPARSER}" "--load=${CG_CONFIGFILE}" "--load-directory=${CG_CONFIGDIR}" >/dev/null 2>&1 + eend "$?" +} + +start_post() +{ + # Classify PID according to the rules if requested + yesno "${CG_CLASSIFY}" || return 0 + ebegin "Classifying PID to CGroups" + local pid + for pid in $(pgrep ''); do + ${CGCLASSIFY} ${pid} || einfo "Classifying ${pid} failed" + done + eend "$?" +} + +stop() +{ + cgconfig_umount +} + +cgconfig_umount() +{ + local ctrl eq mnt_pnt mnt_pts + + while read ctrl eq mnt_pnt; do + case "${ctrl}" in + (\#*) continue ;; + (mount*) mnt_pts=true;; + (\}*) mnt_pts= ;; + (*) + [ -n "${mnt_pts}" ] || continue + mnt_pnt="${mnt_pnt%;}" + ebegin "Unmounting ${mnt_pnt}" + umount "${mnt_pnt}" + eend "$?" + ;; + esac + done < "${CG_CONFIGFILE}" +} |