Fri Mar 9 15:38:03 2012 UTC ()
use explicit cast for RHS of shift operator since semantics change from
traditional c to ansi.


(christos)
diff -r1.9 -r1.10 src/sys/sys/gmon.h

cvs diff -r1.9 -r1.10 src/sys/sys/gmon.h (switch to unified diff)

--- src/sys/sys/gmon.h 2006/10/04 14:22:58 1.9
+++ src/sys/sys/gmon.h 2012/03/09 15:38:03 1.10
@@ -1,153 +1,153 @@ @@ -1,153 +1,153 @@
1/* $NetBSD: gmon.h,v 1.9 2006/10/04 14:22:58 christos Exp $ */ 1/* $NetBSD: gmon.h,v 1.10 2012/03/09 15:38:03 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 1982, 1986, 1992, 1993 4 * Copyright (c) 1982, 1986, 1992, 1993
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors 15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software 16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission. 17 * without specific prior written permission.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 * 30 *
31 * @(#)gmon.h 8.2 (Berkeley) 1/4/94 31 * @(#)gmon.h 8.2 (Berkeley) 1/4/94
32 */ 32 */
33 33
34#ifndef _SYS_GMON_H_ 34#ifndef _SYS_GMON_H_
35#define _SYS_GMON_H_ 35#define _SYS_GMON_H_
36 36
37#include <machine/profile.h> 37#include <machine/profile.h>
38 38
39/* 39/*
40 * Structure prepended to gmon.out profiling data file. 40 * Structure prepended to gmon.out profiling data file.
41 */ 41 */
42struct gmonhdr { 42struct gmonhdr {
43 u_long lpc; /* base pc address of sample buffer */ 43 u_long lpc; /* base pc address of sample buffer */
44 u_long hpc; /* max pc address of sampled buffer */ 44 u_long hpc; /* max pc address of sampled buffer */
45 int ncnt; /* size of sample buffer (plus this header) */ 45 int ncnt; /* size of sample buffer (plus this header) */
46 int version; /* version number */ 46 int version; /* version number */
47 int profrate; /* profiling clock rate */ 47 int profrate; /* profiling clock rate */
48 int spare[3]; /* reserved */ 48 int spare[3]; /* reserved */
49}; 49};
50#define GMONVERSION 0x00051879 50#define GMONVERSION 0x00051879
51 51
52/* 52/*
53 * histogram counters are unsigned shorts (according to the kernel). 53 * histogram counters are unsigned shorts (according to the kernel).
54 */ 54 */
55#define HISTCOUNTER unsigned short 55#define HISTCOUNTER unsigned short
56 56
57/* 57/*
58 * fraction of text space to allocate for histogram counters here, 1/2 58 * fraction of text space to allocate for histogram counters here, 1/2
59 */ 59 */
60#ifndef HISTFRACTION 60#ifndef HISTFRACTION
61#define HISTFRACTION 2 61#define HISTFRACTION 2
62#endif /* HISTFRACTION */ 62#endif /* HISTFRACTION */
63 63
64/* 64/*
65 * Fraction of text space to allocate for from hash buckets. 65 * Fraction of text space to allocate for from hash buckets.
66 * The value of HASHFRACTION is based on the minimum number of bytes 66 * The value of HASHFRACTION is based on the minimum number of bytes
67 * of separation between two subroutine call points in the object code. 67 * of separation between two subroutine call points in the object code.
68 * Given MIN_SUBR_SEPARATION bytes of separation the value of 68 * Given MIN_SUBR_SEPARATION bytes of separation the value of
69 * HASHFRACTION is calculated as: 69 * HASHFRACTION is calculated as:
70 * 70 *
71 * HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1); 71 * HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
72 * 72 *
73 * For example, on the VAX, the shortest two call sequence is: 73 * For example, on the VAX, the shortest two call sequence is:
74 * 74 *
75 * calls $0,(r0) 75 * calls $0,(r0)
76 * calls $0,(r0) 76 * calls $0,(r0)
77 * 77 *
78 * which is separated by only three bytes, thus HASHFRACTION is 78 * which is separated by only three bytes, thus HASHFRACTION is
79 * calculated as: 79 * calculated as:
80 * 80 *
81 * HASHFRACTION = 3 / (2 * 2 - 1) = 1 81 * HASHFRACTION = 3 / (2 * 2 - 1) = 1
82 * 82 *
83 * Note that the division above rounds down, thus if MIN_SUBR_FRACTION 83 * Note that the division above rounds down, thus if MIN_SUBR_FRACTION
84 * is less than three, this algorithm will not work! 84 * is less than three, this algorithm will not work!
85 * 85 *
86 * In practice, however, call instructions are rarely at a minimal 86 * In practice, however, call instructions are rarely at a minimal
87 * distance. Hence, we will define HASHFRACTION to be 2 across all 87 * distance. Hence, we will define HASHFRACTION to be 2 across all
88 * architectures. This saves a reasonable amount of space for 88 * architectures. This saves a reasonable amount of space for
89 * profiling data structures without (in practice) sacrificing 89 * profiling data structures without (in practice) sacrificing
90 * any granularity. 90 * any granularity.
91 */ 91 */
92#define HASHFRACTION 2 92#define HASHFRACTION 2
93 93
94/* 94/*
95 * percent of text space to allocate for tostructs with a minimum. 95 * percent of text space to allocate for tostructs with a minimum.
96 */ 96 */
97#define ARCDENSITY 2 97#define ARCDENSITY 2
98#define MINARCS 50 98#define MINARCS 50
99#define MAXARCS ((1 << (8 * sizeof(HISTCOUNTER))) - 2) 99#define MAXARCS ((1 << (unsigned int)(8 * sizeof(HISTCOUNTER))) - 2)
100 100
101struct tostruct { 101struct tostruct {
102 u_long selfpc; 102 u_long selfpc;
103 long count; 103 long count;
104 u_short link; 104 u_short link;
105 u_short pad; 105 u_short pad;
106}; 106};
107 107
108/* 108/*
109 * a raw arc, with pointers to the calling site and 109 * a raw arc, with pointers to the calling site and
110 * the called site and a count. 110 * the called site and a count.
111 */ 111 */
112struct rawarc { 112struct rawarc {
113 u_long raw_frompc; 113 u_long raw_frompc;
114 u_long raw_selfpc; 114 u_long raw_selfpc;
115 long raw_count; 115 long raw_count;
116}; 116};
117 117
118/* 118/*
119 * The profiling data structures are housed in this structure. 119 * The profiling data structures are housed in this structure.
120 */ 120 */
121struct gmonparam { 121struct gmonparam {
122 int state; 122 int state;
123 u_short *kcount; 123 u_short *kcount;
124 u_long kcountsize; 124 u_long kcountsize;
125 u_short *froms; 125 u_short *froms;
126 u_long fromssize; 126 u_long fromssize;
127 struct tostruct *tos; 127 struct tostruct *tos;
128 u_long tossize; 128 u_long tossize;
129 long tolimit; 129 long tolimit;
130 u_long lowpc; 130 u_long lowpc;
131 u_long highpc; 131 u_long highpc;
132 u_long textsize; 132 u_long textsize;
133 u_long hashfraction; 133 u_long hashfraction;
134}; 134};
135extern struct gmonparam _gmonparam; 135extern struct gmonparam _gmonparam;
136 136
137/* 137/*
138 * Possible states of profiling. 138 * Possible states of profiling.
139 */ 139 */
140#define GMON_PROF_ON 0 140#define GMON_PROF_ON 0
141#define GMON_PROF_BUSY 1 141#define GMON_PROF_BUSY 1
142#define GMON_PROF_ERROR 2 142#define GMON_PROF_ERROR 2
143#define GMON_PROF_OFF 3 143#define GMON_PROF_OFF 3
144 144
145/* 145/*
146 * Sysctl definitions for extracting profiling information from the kernel. 146 * Sysctl definitions for extracting profiling information from the kernel.
147 */ 147 */
148#define GPROF_STATE 0 /* int: profiling enabling variable */ 148#define GPROF_STATE 0 /* int: profiling enabling variable */
149#define GPROF_COUNT 1 /* struct: profile tick count buffer */ 149#define GPROF_COUNT 1 /* struct: profile tick count buffer */
150#define GPROF_FROMS 2 /* struct: from location hash bucket */ 150#define GPROF_FROMS 2 /* struct: from location hash bucket */
151#define GPROF_TOS 3 /* struct: destination/count structure */ 151#define GPROF_TOS 3 /* struct: destination/count structure */
152#define GPROF_GMONPARAM 4 /* struct: profiling parameters (see above) */ 152#define GPROF_GMONPARAM 4 /* struct: profiling parameters (see above) */
153#endif /* !_SYS_GMON_H_ */ 153#endif /* !_SYS_GMON_H_ */