4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
23 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
26 # ident "%Z%%M% %I% %E% SMI"
29 echo expected one argument: '<'dtrace-path'>'
41 cfile=${TMPDIR:-/tmp}/inc.$$.$file.c
42 cofile=${TMPDIR:-/tmp}/inc.$$.$file
49 if cc $CFLAGS -o $cofile $cfile >/dev/null 2>&1; then
50 $dtrace -xerrtags -C -s /dev/stdin \
51 >/dev/null 2>$errfile <<EOF
59 echo $inc failed: `cat $errfile | head -1` > $ofile
61 echo $inc succeeded > $ofile
66 rm -f $cofile $cfile 2>/dev/null
69 concurrency=`psrinfo | wc -l`
70 let concurrency=concurrency*4
73 files=/usr/include/sys/*.h
76 # There are a few files in /usr/include/sys that are known to be bad -- usually
77 # because they include static globals (!) or function bodies (!!) in the header
78 # file. Hopefully these remain sufficiently few that the O(#files * #badfiles)
79 # algorithm, below, doesn't become a problem. (And yes, writing scripts in
80 # something other than ksh1888 would probably be a good idea.) If this script
81 # becomes a problem, kindly fix it by reducing the number of bad files! (That
82 # is, fix it by fixing the broken file, not the broken script.)
84 badfiles="ctype.h eri_msg.h ser_sync.h sbpro.h neti.h hook_event.h \
85 bootconf.h bootstat.h dtrace.h dumphdr.h exacct_impl.h fasttrap.h \
86 kobj.h kobj_impl.h ksyms.h lockstat.h smedia.h stat.h utsname.h"
90 for bad in $badfiles; do
91 if [ "$file" = "$bad" ]; then
96 ofile=${TMPDIR:-/tmp}/inc.$file.$$.out
97 errfile=${TMPDIR:-/tmp}/inc.$file.$$.err
98 doit $file $ofile $errfile &
101 if [ $i -eq $concurrency ]; then
103 # This isn't optimal -- it creates a highly fluctuating load
104 # as we wait for all work to complete -- but it's an easy
105 # way of parallelizing work.
114 bigofile=${TMPDIR:-/tmp}/inc.$$.out
116 for inc in $files; do
118 ofile=${TMPDIR:-/tmp}/inc.$file.$$.out
120 if [ -f $ofile ]; then
121 cat $ofile >> $bigofile
126 status=$(grep "failed:" $bigofile | wc -l)