1c7158ae9Stariq# 2c7158ae9Stariq# CDDL HEADER START 3c7158ae9Stariq# 4c7158ae9Stariq# The contents of this file are subject to the terms of the 5c7158ae9Stariq# Common Development and Distribution License (the "License"). 6c7158ae9Stariq# You may not use this file except in compliance with the License. 7c7158ae9Stariq# 8c7158ae9Stariq# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9c7158ae9Stariq# or http://www.opensolaris.org/os/licensing. 10c7158ae9Stariq# See the License for the specific language governing permissions 11c7158ae9Stariq# and limitations under the License. 12c7158ae9Stariq# 13c7158ae9Stariq# When distributing Covered Code, include this CDDL HEADER in each 14c7158ae9Stariq# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15c7158ae9Stariq# If applicable, add the following below this CDDL HEADER, with the 16c7158ae9Stariq# fields enclosed by brackets "[]" replaced with your own identifying 17c7158ae9Stariq# information: Portions Copyright [yyyy] [name of copyright owner] 18c7158ae9Stariq# 19c7158ae9Stariq# CDDL HEADER END 20c7158ae9Stariq# 21c7158ae9Stariq 22c7158ae9Stariq# 2355f5292cSFrank Van Der Linden# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24c7158ae9Stariq# Use is subject to license terms. 25c7158ae9Stariq# 26c7158ae9Stariq 27c7158ae9Stariq# 28c7158ae9Stariq# ASSERTION: Sched probe arguments should be valid. 29c7158ae9Stariq# 30c7158ae9Stariq 31c7158ae9Stariqif [ $# != 1 ]; then 32c7158ae9Stariq echo expected one argument: '<'dtrace-path'>' 33c7158ae9Stariq exit 2 34c7158ae9Stariqfi 35c7158ae9Stariq 36c7158ae9Stariq# 37c7158ae9Stariq# do not fail test in a domU 38c7158ae9Stariq# 39c7158ae9Stariqif [ ! -c /dev/xen/privcmd ]; then 40c7158ae9Stariq exit 0 41c7158ae9Stariqfi 42c7158ae9Stariq 43c7158ae9Stariqdtrace=$1 44c7158ae9Stariqoutf=/tmp/sched.args.$$ 45c7158ae9Stariq 46c7158ae9Stariqscript() 47c7158ae9Stariq{ 48c7158ae9Stariq $dtrace -c '/usr/bin/sleep 10' -o $outf -qs /dev/stdin <<EOF 49c7158ae9Stariq xdt:sched::off-cpu, 50c7158ae9Stariq xdt:sched::on-cpu, 51c7158ae9Stariq xdt:sched::block, 52c7158ae9Stariq xdt:sched::sleep, 53c7158ae9Stariq xdt:sched::wake, 54c7158ae9Stariq xdt:sched::yield 55c7158ae9Stariq { 56c7158ae9Stariq /* print domid vcpu pcpu probename */ 57*121d13daSFrank Van Der Linden printf("%d %d %d %s\n", arg0, arg1, \`xdt_curpcpu, probename); 58c7158ae9Stariq } 59c7158ae9StariqEOF 60c7158ae9Stariq} 61c7158ae9Stariq 62c7158ae9Stariqvalidate() 63c7158ae9Stariq{ 64c7158ae9Stariq /usr/bin/nawk ' 65c7158ae9Stariq BEGIN { 66c7158ae9Stariq while (("/usr/sbin/xm vcpu-list" | getline)) { 67c7158ae9Stariq if ($1 != "Name") { 68c7158ae9Stariq domid = $2 69c7158ae9Stariq vcpu = $3 70c7158ae9Stariq 71c7158ae9Stariq vcpumap[domid, vcpu] = 1 72c7158ae9Stariq 73c7158ae9Stariq split($7, affinity, ",") 74c7158ae9Stariq for (i in affinity) { 75c7158ae9Stariq if (split(affinity[i], p, "-") > 1) { 76c7158ae9Stariq for (pcpu = p[1]; pcpu <= p[2];\ 77c7158ae9Stariq pcpu++) { 78c7158ae9Stariq cpumap[domid, vcpu, 79c7158ae9Stariq pcpu] = 1 80c7158ae9Stariq } 81c7158ae9Stariq } else { 82c7158ae9Stariq cpumap[domid, vcpu, 83c7158ae9Stariq affinity[i]] = 1 84c7158ae9Stariq } 85c7158ae9Stariq } 86c7158ae9Stariq } 87c7158ae9Stariq } 88c7158ae9Stariq } 89c7158ae9Stariq 90c7158ae9Stariq /^$/ { next } 91c7158ae9Stariq 92c7158ae9Stariq /wake/ { 93c7158ae9Stariq if (vcpumap[$1, $2]) { 94c7158ae9Stariq next 95c7158ae9Stariq } else { 96c7158ae9Stariq print "error: " $0 97c7158ae9Stariq exit 1 98c7158ae9Stariq } 99c7158ae9Stariq } 100c7158ae9Stariq 101c7158ae9Stariq { 102c7158ae9Stariq if (cpumap[$1, $2, "any"] || cpumap[$1, $2, $3]) { 103c7158ae9Stariq next 104c7158ae9Stariq } else { 105c7158ae9Stariq print "error: " $0 106c7158ae9Stariq exit 1 107c7158ae9Stariq } 108c7158ae9Stariq } 109c7158ae9Stariq ' $outf 110c7158ae9Stariq} 111c7158ae9Stariq 112c7158ae9Stariqscript 113c7158ae9Stariqstatus=$? 114c7158ae9Stariq 115c7158ae9Stariqif [ $status == 0 ]; then 116c7158ae9Stariq validate 117c7158ae9Stariq status=$? 118c7158ae9Stariqfi 119c7158ae9Stariq 120c7158ae9Stariqrm $outf 121c7158ae9Stariqexit $status 122