xref: /titanic_44/usr/src/cmd/dispadmin/svc-scheduler (revision d98ed3d7be38777343c0767e5c3bdc78a0eb1950)
1 #!/sbin/sh
2 #
3 # CDDL HEADER START
4 #
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License, Version 1.0 only
7 # (the "License").  You may not use this file except in compliance
8 # with the License.
9 #
10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11 # or http://www.opensolaris.org/os/licensing.
12 # See the License for the specific language governing permissions
13 # and limitations under the License.
14 #
15 # When distributing Covered Code, include this CDDL HEADER in each
16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17 # If applicable, add the following below this CDDL HEADER, with the
18 # fields enclosed by brackets "[]" replaced with your own identifying
19 # information: Portions Copyright [yyyy] [name of copyright owner]
20 #
21 # CDDL HEADER END
22 #
23 #
24 # Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
25 # Use is subject to license terms.
26 #
27 # ident	"%Z%%M%	%I%	%E% SMI"
28 #
29 # Set default scheduling class
30 #
31 
32 . /lib/svc/share/smf_include.sh
33 
34 [ -f /etc/dispadmin.conf ] || exit $SMF_EXIT_OK
35 if  [ -x /usr/sbin/dispadmin ] && [ -x /usr/bin/priocntl ]; then
36 	ERROR="$0: cannot set default scheduling class to "
37 	DISPADMIN_D=`/usr/sbin/dispadmin -d`
38 
39 	if [ $? -eq 0 ]; then
40 		#
41 		# Inform the kernel about the default scheduling class.
42 		#
43 		/usr/sbin/dispadmin -u
44 
45 		DEFAULT_SCHEDULER=`echo $DISPADMIN_D | /usr/bin/cut -f1 -d' '`
46 
47 		/usr/bin/priocntl -s -c $DEFAULT_SCHEDULER -i all
48 		if [ $? -ne 0 ]; then
49 			echo $ERROR $DEFAULT_SCHEDULER
50 			exit $SMF_EXIT_ERR_FATAL
51 		else
52 			#
53 			# Also need to move init process explicitly
54 			# because it was ignored by "-i all".
55 			#
56 			/usr/bin/priocntl -s -c $DEFAULT_SCHEDULER -i pid 1
57 			if [ $? -ne 0 ]; then
58 				echo $ERROR $DEFAULT_SCHEDULER
59 				exit $SMF_EXIT_ERR_FATAL
60 			fi
61 		fi
62 	else
63 		#
64 		# Default scheduling class from dispadmin.conf is
65 		# invalid or not available.
66 		#
67 		exit $SMF_EXIT_ERR_CONFIG
68 	fi
69 else
70 	# dispadmin or priocntl commands can't be executed
71 	echo "$0: cannot execute command"
72 	exit $SMF_EXIT_ERR_FATAL
73 fi
74 exit $SMF_EXIT_OK
75