summaryrefslogtreecommitdiff
path: root/dev-libs/libcgroup/files/cgconfig.initd-r2
blob: aaf3ea88031ba9066739dee1358fa9e788412b28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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}"
}