tst.schedargs.ksh revision 11270:47a962fe7b45
1251881Speter# 2251881Speter# CDDL HEADER START 3251881Speter# 4251881Speter# The contents of this file are subject to the terms of the 5251881Speter# Common Development and Distribution License (the "License"). 6251881Speter# You may not use this file except in compliance with the License. 7251881Speter# 8251881Speter# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9251881Speter# or http://www.opensolaris.org/os/licensing. 10251881Speter# See the License for the specific language governing permissions 11251881Speter# and limitations under the License. 12251881Speter# 13251881Speter# When distributing Covered Code, include this CDDL HEADER in each 14251881Speter# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15251881Speter# If applicable, add the following below this CDDL HEADER, with the 16251881Speter# fields enclosed by brackets "[]" replaced with your own identifying 17251881Speter# information: Portions Copyright [yyyy] [name of copyright owner] 18251881Speter# 19251881Speter# CDDL HEADER END 20251881Speter# 21251881Speter 22251881Speter# 23251881Speter# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24251881Speter# Use is subject to license terms. 25251881Speter# 26251881Speter 27251881Speter# 28251881Speter# ASSERTION: Sched probe arguments should be valid. 29251881Speter# 30251881Speter 31251881Speterif [ $# != 1 ]; then 32251881Speter echo expected one argument: '<'dtrace-path'>' 33251881Speter exit 2 34251881Speterfi 35251881Speter 36251881Speter# 37251881Speter# do not fail test in a domU 38251881Speter# 39251881Speterif [ ! -c /dev/xen/privcmd ]; then 40251881Speter exit 0 41251881Speterfi 42251881Speter 43251881Speterdtrace=$1 44251881Speteroutf=/tmp/sched.args.$$ 45251881Speter 46251881Speterscript() 47251881Speter{ 48251881Speter $dtrace -c '/usr/bin/sleep 10' -o $outf -qs /dev/stdin <<EOF 49251881Speter xdt:sched::off-cpu, 50251881Speter xdt:sched::on-cpu, 51251881Speter xdt:sched::block, 52251881Speter xdt:sched::sleep, 53251881Speter xdt:sched::wake, 54251881Speter xdt:sched::yield 55251881Speter { 56251881Speter /* print domid vcpu pcpu probename */ 57251881Speter printf("%d %d %d %s\n", arg0, arg1, \`xdt_curpcpu, probename); 58251881Speter } 59251881SpeterEOF 60251881Speter} 61251881Speter 62251881Spetervalidate() 63251881Speter{ 64251881Speter /usr/bin/nawk ' 65251881Speter BEGIN { 66251881Speter while (("/usr/sbin/xm vcpu-list" | getline)) { 67251881Speter if ($1 != "Name") { 68251881Speter domid = $2 69251881Speter vcpu = $3 70251881Speter 71251881Speter vcpumap[domid, vcpu] = 1 72251881Speter 73251881Speter split($7, affinity, ",") 74251881Speter for (i in affinity) { 75251881Speter if (split(affinity[i], p, "-") > 1) { 76251881Speter for (pcpu = p[1]; pcpu <= p[2];\ 77251881Speter pcpu++) { 78251881Speter cpumap[domid, vcpu, 79251881Speter pcpu] = 1 80251881Speter } 81251881Speter } else { 82251881Speter cpumap[domid, vcpu, 83251881Speter affinity[i]] = 1 84251881Speter } 85251881Speter } 86251881Speter } 87251881Speter } 88251881Speter } 89251881Speter 90251881Speter /^$/ { next } 91251881Speter 92251881Speter /wake/ { 93251881Speter if (vcpumap[$1, $2]) { 94251881Speter next 95251881Speter } else { 96251881Speter print "error: " $0 97251881Speter exit 1 98251881Speter } 99251881Speter } 100251881Speter 101 { 102 if (cpumap[$1, $2, "any"] || cpumap[$1, $2, $3]) { 103 next 104 } else { 105 print "error: " $0 106 exit 1 107 } 108 } 109 ' $outf 110} 111 112script 113status=$? 114 115if [ $status == 0 ]; then 116 validate 117 status=$? 118fi 119 120rm $outf 121exit $status 122