| #!/sbin/openrc-run |
| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| CGCONFIGPARSER="/usr/sbin/cgconfigparser" |
| CGCLASSIFY="/usr/sbin/cgclassify" |
| : ${CG_CONFIGFILE:=/etc/cgroup/cgconfig.conf} |
| description="Control Group Configuration Service" |
| |
| start() |
| { |
| ebegin "Setting up CGroups" |
| ${CGCONFIGPARSER} --load=${CG_CONFIGFILE} >/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 $(ps --no-headers -eL o tid); do |
| ${CGCLASSIFY} ${pid} |
| 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}" |
| } |