]> git.pld-linux.org Git - projects/rc-scripts.git/blame - rc.d/init.d/cpusets
- unified function definitions (line-saving way),
[projects/rc-scripts.git] / rc.d / init.d / cpusets
CommitLineData
686f4b8d
JR
1#!/bin/sh
2#
3# cpusets Create/remove cpusets
4#
5e6dfc29
JR
5# chkconfig: 12345 01 99
6# description: Creates/Removes all cpu sets configured to \
686f4b8d
JR
7# start at boot time.
8#
9# probe: true
10
5032c467 11# $Id$
686f4b8d 12
375e71b8
ER
13. /etc/sysconfig/system
14
15if [ "${CPUSETS:-no}" = "no" ]; then
16 case "$1" in
17 start|stop|restart)
18 exit 0
19 ;;
20 esac
21fi
22
686f4b8d
JR
23# Source function library.
24. /etc/rc.d/init.d/functions
25
375e71b8
ER
26if is_yes "${CPUSETS}" && ! grep -q "/dev/cpuset" /proc/mounts ; then
27 nls "ERROR: CPUSET support not enabled in kernel or /dev/cpuset not mounted" >&2
b1b7d442 28 exit 1
686f4b8d
JR
29fi
30
18bd13ac 31cpuset_create() {
5e6dfc29
JR
32 local CPUS MEMS CPU_EXCLUSIVE MEM_EXCLUSIVE NOTIFY_ON_RELEASE TASKS
33
34 . /etc/sysconfig/cpusets/cpuset-$i
35
36 if mkdir /dev/cpuset/"$NAME" >/dev/null 2>&1 ; then
37 [ -n "$CPUS" ] && echo "$CPUS" >/dev/cpuset/"$NAME"/cpus
38 [ -n "$MEMS" ] && echo "$MEMS" >/dev/cpuset/"$NAME"/mems
39 [ -n "$CPU_EXCLUSIVE" ] && echo "$CPU_EXCLUSIVE" >/dev/cpuset/"$NAME"/cpu_exclusive
40 [ -n "$MEM_EXCLUSIVE" ] && echo "$MEM_EXCLUSIVE" >/dev/cpuset/"$NAME"/mem_exclusive
41 [ -n "$NOTIFY_ON_RELEASE" ] && echo "$NOTIFY_ON_RELEASE" >/dev/cpuset/"$NAME"/notify_on_release
cc3ff68c 42 [ -n "$VIRTUALIZE" ] && echo "$VIRTUALIZE" >/dev/cpuset/"$NAME"/virtualize
5e6dfc29
JR
43 [ -n "$TASKS" ] && echo "$TASKS" >/dev/cpuset/"$NAME"/tasks
44 return 0
45 fi
46 return 1
686f4b8d
JR
47}
48
18bd13ac 49cpuset_remove() {
5e6dfc29 50 local CPUS MEMS CPU_EXCLUSIVE MEM_EXCLUSIVE NOTIFY_ON_RELEASE TASKS
059ce297 51
5e6dfc29 52 . /etc/sysconfig/cpusets/cpuset-$i
686f4b8d 53
5e6dfc29
JR
54 # This MUST be rmdir (not rm -rf)
55 if rmdir /dev/cpuset/"$NAME" >/dev/null 2>&1 ; then
56 return 0
57 else
58 return 1
59 fi
686f4b8d
JR
60}
61
18bd13ac 62cpuset_empty() {
5e6dfc29
JR
63 if [ $(cat /dev/cpuset/$1/tasks 2>/dev/null | wc -c) -eq 0 ] ; then
64 # true returns zero
65 return 0
66 else
67 # false returns one
68 return 1
69 fi
686f4b8d
JR
70}
71
6236caca 72start() {
686f4b8d
JR
73 rc_splash "bootcpusets start"
74
375e71b8 75 for i in $cpusets_boot; do
f025683f
JR
76 show "$(nls -n "Creating cpuset %s" "$i")"
77 if cpuset_create $i ; then
5e6dfc29 78 ok
f025683f 79 else
5e6dfc29 80 fail
f025683f 81 fi
686f4b8d
JR
82 done
83
5e6dfc29 84 touch /var/lock/subsys/cpusets
6236caca
ER
85}
86
87stop() {
375e71b8 88 for i in $cpusets_boot; do
f025683f 89 show "$(nls -n "Removing cpuset %s" "$i")"
686f4b8d 90 busy
375e71b8
ER
91 if cpuset_empty $i; then
92 if cpuset_remove $i; then
5e6dfc29
JR
93 ok
94 else
95 fail
96 fi
686f4b8d 97 else
5e6dfc29 98 fail
686f4b8d
JR
99 fi
100 done
101
5e6dfc29 102 rm -f /var/lock/subsys/cpusets
6236caca
ER
103}
104
40d5c0e4
ER
105# Get list of config files
106# ignores editor backup files and rpm blackups
18bd13ac 107cpuset_configs() {
40d5c0e4
ER
108 local match="$1"
109 for a in /etc/sysconfig/cpusets/$match; do
110 case "$a" in
111 *rpmorig|*rpmnew|*rpmsave|*~|*.orig)
112 continue
113 ;;
114 *)
115 echo $a
116 ;;
117 esac
118 done
119}
120
121cpuset_files="$(cpuset_configs 'cpuset-*')"
bf14fcab 122cpusets_boot=$(
40d5c0e4
ER
123 for i in $cpuset_files; do
124 ONBOOT=""; . "$i" 2>/dev/null
041f9800 125 is_yes "$ONBOOT" && echo "${i##*/cpuset-}"
40d5c0e4 126 done
bf14fcab 127)
6236caca
ER
128
129# See how we were called.
130case "$1" in
131 start)
132 start
133 ;;
134 stop)
135 stop
5e6dfc29 136 ;;
686f4b8d
JR
137 status)
138 nls "Configured cpusets:"
139 echo "$cpusets_boot"
140 echo
141 nls "Currently empty cpusets:"
bf14fcab 142 for i in $(ls /dev/cpuset 2>/dev/null); do
375e71b8 143 if [ -d /dev/cpuset/$i ]; then
5e6dfc29
JR
144 cpuset_empty $i && echo $i
145 fi
686f4b8d 146 done
66cba726 147 echo
686f4b8d 148 nls "Currently active cpusets:"
bf14fcab 149 for i in $(ls /dev/cpuset 2>/dev/null); do
375e71b8 150 if [ -d /dev/cpuset/$i ]; then
5e6dfc29
JR
151 cpuset_empty $i || echo $i
152 fi
686f4b8d 153 done
66cba726 154 echo
686f4b8d
JR
155 ;;
156 restart)
6236caca
ER
157 stop
158 start
686f4b8d
JR
159 ;;
160 *)
34beb396 161 msg_usage "$0 {start|stop|restart|status}"
5afa7275 162 exit 3
686f4b8d
JR
163esac
164
165exit 0
This page took 0.162312 seconds and 4 git commands to generate.