c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# CDDL HEADER START
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# The contents of this file are subject to the terms of the
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# Common Development and Distribution License (the "License").
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# You may not use this file except in compliance with the License.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# See the License for the specific language governing permissions
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# and limitations under the License.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# When distributing Covered Code, include this CDDL HEADER in each
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# If applicable, add the following below this CDDL HEADER, with the
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# fields enclosed by brackets "[]" replaced with your own identifying
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# information: Portions Copyright [yyyy] [name of copyright owner]
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# CDDL HEADER END
55f5292c612446ce6f93ddd248c0019b5974618bFrank Van Der Linden# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# Use is subject to license terms.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# ASSERTION: Sched probe arguments should be valid.
c7158ae983f5a04c4a998f468ecefba6d23ba721tariqif [ $# != 1 ]; then
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq# do not fail test in a domU
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq $dtrace -c '/usr/bin/sleep 10' -o $outf -qs /dev/stdin <<EOF
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::off-cpu,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::on-cpu,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::block,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::sleep,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::wake,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq xdt:sched::yield
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq /* print domid vcpu pcpu probename */
121d13daefbeb0546d0d9c6ef16c753aa6890290Frank Van Der Linden printf("%d %d %d %s\n", arg0, arg1, \`xdt_curpcpu, probename);
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq while (("/usr/sbin/xm vcpu-list" | getline)) {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq if ($1 != "Name") {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq vcpumap[domid, vcpu] = 1
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq split($7, affinity, ",")
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq for (i in affinity) {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq if (split(affinity[i], p, "-") > 1) {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq for (pcpu = p[1]; pcpu <= p[2];\
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq cpumap[domid, vcpu,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq cpumap[domid, vcpu,
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq affinity[i]] = 1
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq /^$/ { next }
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq if (vcpumap[$1, $2]) {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq print "error: " $0
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq if (cpumap[$1, $2, "any"] || cpumap[$1, $2, $3]) {
c7158ae983f5a04c4a998f468ecefba6d23ba721tariq print "error: " $0