Bring the following change from the illumos-joyent repository:
commit 78e24ab6803bbe11ba37642624e1498ede5b239d Author: Bryan Cantrill <bryan@joyent.com> Date: Thu Oct 31 01:20:54 2013 OS-1688 DTrace count() with histogram OS-2360 DTrace full width distribution histograms OS-2361 DTrace frequency trails MFC after: 2 weeks
This commit is contained in:
parent
b6cee71de3
commit
d8e37c5f72
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* This file and its contents are supplied under the terms of the
|
||||||
|
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
* You may only use this file in accordance with the terms of version
|
||||||
|
* 1.0 of the CDDL.
|
||||||
|
*
|
||||||
|
* A full copy of the text of the CDDL should have accompanied this
|
||||||
|
* source. A copy of the CDDL is also available via the Internet at
|
||||||
|
* http://www.illumos.org/license/CDDL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option quiet
|
||||||
|
#pragma D option encoding=utf8
|
||||||
|
#pragma D option aggzoom
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i++ < 320/
|
||||||
|
{
|
||||||
|
@ = lquantize(i, 0, 640, 1, i);
|
||||||
|
@ = lquantize(641 - i, 0, 640, 1, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i == 320/
|
||||||
|
{
|
||||||
|
printa(@);
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -0,0 +1,646 @@
|
|||||||
|
|
||||||
|
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
0 | 0
|
||||||
|
1 | 1
|
||||||
|
2 |▏ 2
|
||||||
|
3 |▎ 3
|
||||||
|
4 |▍ 4
|
||||||
|
5 |▌ 5
|
||||||
|
6 |▋ 6
|
||||||
|
7 |▊ 7
|
||||||
|
8 |▉ 8
|
||||||
|
9 |█ 9
|
||||||
|
10 |█▏ 10
|
||||||
|
11 |█▎ 11
|
||||||
|
12 |█▍ 12
|
||||||
|
13 |█▌ 13
|
||||||
|
14 |█▋ 14
|
||||||
|
15 |█▊ 15
|
||||||
|
16 |█▉ 16
|
||||||
|
17 |██ 17
|
||||||
|
18 |██▏ 18
|
||||||
|
19 |██▎ 19
|
||||||
|
20 |██▍ 20
|
||||||
|
21 |██▍ 21
|
||||||
|
22 |██▌ 22
|
||||||
|
23 |██▋ 23
|
||||||
|
24 |██▊ 24
|
||||||
|
25 |██▉ 25
|
||||||
|
26 |███ 26
|
||||||
|
27 |███▏ 27
|
||||||
|
28 |███▎ 28
|
||||||
|
29 |███▍ 29
|
||||||
|
30 |███▌ 30
|
||||||
|
31 |███▋ 31
|
||||||
|
32 |███▊ 32
|
||||||
|
33 |███▉ 33
|
||||||
|
34 |████ 34
|
||||||
|
35 |████▏ 35
|
||||||
|
36 |████▎ 36
|
||||||
|
37 |████▍ 37
|
||||||
|
38 |████▌ 38
|
||||||
|
39 |████▋ 39
|
||||||
|
40 |████▊ 40
|
||||||
|
41 |████▊ 41
|
||||||
|
42 |████▉ 42
|
||||||
|
43 |█████ 43
|
||||||
|
44 |█████▏ 44
|
||||||
|
45 |█████▎ 45
|
||||||
|
46 |█████▍ 46
|
||||||
|
47 |█████▌ 47
|
||||||
|
48 |█████▋ 48
|
||||||
|
49 |█████▊ 49
|
||||||
|
50 |█████▉ 50
|
||||||
|
51 |██████ 51
|
||||||
|
52 |██████▏ 52
|
||||||
|
53 |██████▎ 53
|
||||||
|
54 |██████▍ 54
|
||||||
|
55 |██████▌ 55
|
||||||
|
56 |██████▋ 56
|
||||||
|
57 |██████▊ 57
|
||||||
|
58 |██████▉ 58
|
||||||
|
59 |███████ 59
|
||||||
|
60 |███████▏ 60
|
||||||
|
61 |███████▏ 61
|
||||||
|
62 |███████▎ 62
|
||||||
|
63 |███████▍ 63
|
||||||
|
64 |███████▌ 64
|
||||||
|
65 |███████▋ 65
|
||||||
|
66 |███████▊ 66
|
||||||
|
67 |███████▉ 67
|
||||||
|
68 |████████ 68
|
||||||
|
69 |████████▏ 69
|
||||||
|
70 |████████▎ 70
|
||||||
|
71 |████████▍ 71
|
||||||
|
72 |████████▌ 72
|
||||||
|
73 |████████▋ 73
|
||||||
|
74 |████████▊ 74
|
||||||
|
75 |████████▉ 75
|
||||||
|
76 |█████████ 76
|
||||||
|
77 |█████████▏ 77
|
||||||
|
78 |█████████▎ 78
|
||||||
|
79 |█████████▍ 79
|
||||||
|
80 |█████████▌ 80
|
||||||
|
81 |█████████▌ 81
|
||||||
|
82 |█████████▋ 82
|
||||||
|
83 |█████████▊ 83
|
||||||
|
84 |█████████▉ 84
|
||||||
|
85 |██████████ 85
|
||||||
|
86 |██████████▏ 86
|
||||||
|
87 |██████████▎ 87
|
||||||
|
88 |██████████▍ 88
|
||||||
|
89 |██████████▌ 89
|
||||||
|
90 |██████████▋ 90
|
||||||
|
91 |██████████▊ 91
|
||||||
|
92 |██████████▉ 92
|
||||||
|
93 |███████████ 93
|
||||||
|
94 |███████████▏ 94
|
||||||
|
95 |███████████▎ 95
|
||||||
|
96 |███████████▍ 96
|
||||||
|
97 |███████████▌ 97
|
||||||
|
98 |███████████▋ 98
|
||||||
|
99 |███████████▊ 99
|
||||||
|
100 |███████████▉ 100
|
||||||
|
101 |███████████▉ 101
|
||||||
|
102 |████████████ 102
|
||||||
|
103 |████████████▏ 103
|
||||||
|
104 |████████████▎ 104
|
||||||
|
105 |████████████▍ 105
|
||||||
|
106 |████████████▌ 106
|
||||||
|
107 |████████████▋ 107
|
||||||
|
108 |████████████▊ 108
|
||||||
|
109 |████████████▉ 109
|
||||||
|
110 |█████████████ 110
|
||||||
|
111 |█████████████▏ 111
|
||||||
|
112 |█████████████▎ 112
|
||||||
|
113 |█████████████▍ 113
|
||||||
|
114 |█████████████▌ 114
|
||||||
|
115 |█████████████▋ 115
|
||||||
|
116 |█████████████▊ 116
|
||||||
|
117 |█████████████▉ 117
|
||||||
|
118 |██████████████ 118
|
||||||
|
119 |██████████████▏ 119
|
||||||
|
120 |██████████████▎ 120
|
||||||
|
121 |██████████████▎ 121
|
||||||
|
122 |██████████████▍ 122
|
||||||
|
123 |██████████████▌ 123
|
||||||
|
124 |██████████████▋ 124
|
||||||
|
125 |██████████████▊ 125
|
||||||
|
126 |██████████████▉ 126
|
||||||
|
127 |███████████████ 127
|
||||||
|
128 |███████████████▏ 128
|
||||||
|
129 |███████████████▎ 129
|
||||||
|
130 |███████████████▍ 130
|
||||||
|
131 |███████████████▌ 131
|
||||||
|
132 |███████████████▋ 132
|
||||||
|
133 |███████████████▊ 133
|
||||||
|
134 |███████████████▉ 134
|
||||||
|
135 |████████████████ 135
|
||||||
|
136 |████████████████▏ 136
|
||||||
|
137 |████████████████▎ 137
|
||||||
|
138 |████████████████▍ 138
|
||||||
|
139 |████████████████▌ 139
|
||||||
|
140 |████████████████▋ 140
|
||||||
|
141 |████████████████▋ 141
|
||||||
|
142 |████████████████▊ 142
|
||||||
|
143 |████████████████▉ 143
|
||||||
|
144 |█████████████████ 144
|
||||||
|
145 |█████████████████▏ 145
|
||||||
|
146 |█████████████████▎ 146
|
||||||
|
147 |█████████████████▍ 147
|
||||||
|
148 |█████████████████▌ 148
|
||||||
|
149 |█████████████████▋ 149
|
||||||
|
150 |█████████████████▊ 150
|
||||||
|
151 |█████████████████▉ 151
|
||||||
|
152 |██████████████████ 152
|
||||||
|
153 |██████████████████▏ 153
|
||||||
|
154 |██████████████████▎ 154
|
||||||
|
155 |██████████████████▍ 155
|
||||||
|
156 |██████████████████▌ 156
|
||||||
|
157 |██████████████████▋ 157
|
||||||
|
158 |██████████████████▊ 158
|
||||||
|
159 |██████████████████▉ 159
|
||||||
|
160 |███████████████████ 160
|
||||||
|
161 |███████████████████ 161
|
||||||
|
162 |███████████████████▏ 162
|
||||||
|
163 |███████████████████▎ 163
|
||||||
|
164 |███████████████████▍ 164
|
||||||
|
165 |███████████████████▌ 165
|
||||||
|
166 |███████████████████▋ 166
|
||||||
|
167 |███████████████████▊ 167
|
||||||
|
168 |███████████████████▉ 168
|
||||||
|
169 |████████████████████ 169
|
||||||
|
170 |████████████████████▏ 170
|
||||||
|
171 |████████████████████▎ 171
|
||||||
|
172 |████████████████████▍ 172
|
||||||
|
173 |████████████████████▌ 173
|
||||||
|
174 |████████████████████▋ 174
|
||||||
|
175 |████████████████████▊ 175
|
||||||
|
176 |████████████████████▉ 176
|
||||||
|
177 |█████████████████████ 177
|
||||||
|
178 |█████████████████████▏ 178
|
||||||
|
179 |█████████████████████▎ 179
|
||||||
|
180 |█████████████████████▍ 180
|
||||||
|
181 |█████████████████████▍ 181
|
||||||
|
182 |█████████████████████▌ 182
|
||||||
|
183 |█████████████████████▋ 183
|
||||||
|
184 |█████████████████████▊ 184
|
||||||
|
185 |█████████████████████▉ 185
|
||||||
|
186 |██████████████████████ 186
|
||||||
|
187 |██████████████████████▏ 187
|
||||||
|
188 |██████████████████████▎ 188
|
||||||
|
189 |██████████████████████▍ 189
|
||||||
|
190 |██████████████████████▌ 190
|
||||||
|
191 |██████████████████████▋ 191
|
||||||
|
192 |██████████████████████▊ 192
|
||||||
|
193 |██████████████████████▉ 193
|
||||||
|
194 |███████████████████████ 194
|
||||||
|
195 |███████████████████████▏ 195
|
||||||
|
196 |███████████████████████▎ 196
|
||||||
|
197 |███████████████████████▍ 197
|
||||||
|
198 |███████████████████████▌ 198
|
||||||
|
199 |███████████████████████▋ 199
|
||||||
|
200 |███████████████████████▊ 200
|
||||||
|
201 |███████████████████████▊ 201
|
||||||
|
202 |███████████████████████▉ 202
|
||||||
|
203 |████████████████████████ 203
|
||||||
|
204 |████████████████████████▏ 204
|
||||||
|
205 |████████████████████████▎ 205
|
||||||
|
206 |████████████████████████▍ 206
|
||||||
|
207 |████████████████████████▌ 207
|
||||||
|
208 |████████████████████████▋ 208
|
||||||
|
209 |████████████████████████▊ 209
|
||||||
|
210 |████████████████████████▉ 210
|
||||||
|
211 |█████████████████████████ 211
|
||||||
|
212 |█████████████████████████▏ 212
|
||||||
|
213 |█████████████████████████▎ 213
|
||||||
|
214 |█████████████████████████▍ 214
|
||||||
|
215 |█████████████████████████▌ 215
|
||||||
|
216 |█████████████████████████▋ 216
|
||||||
|
217 |█████████████████████████▊ 217
|
||||||
|
218 |█████████████████████████▉ 218
|
||||||
|
219 |██████████████████████████ 219
|
||||||
|
220 |██████████████████████████▏ 220
|
||||||
|
221 |██████████████████████████▏ 221
|
||||||
|
222 |██████████████████████████▎ 222
|
||||||
|
223 |██████████████████████████▍ 223
|
||||||
|
224 |██████████████████████████▌ 224
|
||||||
|
225 |██████████████████████████▋ 225
|
||||||
|
226 |██████████████████████████▊ 226
|
||||||
|
227 |██████████████████████████▉ 227
|
||||||
|
228 |███████████████████████████ 228
|
||||||
|
229 |███████████████████████████▏ 229
|
||||||
|
230 |███████████████████████████▎ 230
|
||||||
|
231 |███████████████████████████▍ 231
|
||||||
|
232 |███████████████████████████▌ 232
|
||||||
|
233 |███████████████████████████▋ 233
|
||||||
|
234 |███████████████████████████▊ 234
|
||||||
|
235 |███████████████████████████▉ 235
|
||||||
|
236 |████████████████████████████ 236
|
||||||
|
237 |████████████████████████████▏ 237
|
||||||
|
238 |████████████████████████████▎ 238
|
||||||
|
239 |████████████████████████████▍ 239
|
||||||
|
240 |████████████████████████████▌ 240
|
||||||
|
241 |████████████████████████████▌ 241
|
||||||
|
242 |████████████████████████████▋ 242
|
||||||
|
243 |████████████████████████████▊ 243
|
||||||
|
244 |████████████████████████████▉ 244
|
||||||
|
245 |█████████████████████████████ 245
|
||||||
|
246 |█████████████████████████████▏ 246
|
||||||
|
247 |█████████████████████████████▎ 247
|
||||||
|
248 |█████████████████████████████▍ 248
|
||||||
|
249 |█████████████████████████████▌ 249
|
||||||
|
250 |█████████████████████████████▋ 250
|
||||||
|
251 |█████████████████████████████▊ 251
|
||||||
|
252 |█████████████████████████████▉ 252
|
||||||
|
253 |██████████████████████████████ 253
|
||||||
|
254 |██████████████████████████████▏ 254
|
||||||
|
255 |██████████████████████████████▎ 255
|
||||||
|
256 |██████████████████████████████▍ 256
|
||||||
|
257 |██████████████████████████████▌ 257
|
||||||
|
258 |██████████████████████████████▋ 258
|
||||||
|
259 |██████████████████████████████▊ 259
|
||||||
|
260 |██████████████████████████████▉ 260
|
||||||
|
261 |██████████████████████████████▉ 261
|
||||||
|
262 |███████████████████████████████ 262
|
||||||
|
263 |███████████████████████████████▏ 263
|
||||||
|
264 |███████████████████████████████▎ 264
|
||||||
|
265 |███████████████████████████████▍ 265
|
||||||
|
266 |███████████████████████████████▌ 266
|
||||||
|
267 |███████████████████████████████▋ 267
|
||||||
|
268 |███████████████████████████████▊ 268
|
||||||
|
269 |███████████████████████████████▉ 269
|
||||||
|
270 |████████████████████████████████ 270
|
||||||
|
271 |████████████████████████████████▏ 271
|
||||||
|
272 |████████████████████████████████▎ 272
|
||||||
|
273 |████████████████████████████████▍ 273
|
||||||
|
274 |████████████████████████████████▌ 274
|
||||||
|
275 |████████████████████████████████▋ 275
|
||||||
|
276 |████████████████████████████████▊ 276
|
||||||
|
277 |████████████████████████████████▉ 277
|
||||||
|
278 |█████████████████████████████████ 278
|
||||||
|
279 |█████████████████████████████████▏ 279
|
||||||
|
280 |█████████████████████████████████▎ 280
|
||||||
|
281 |█████████████████████████████████▎ 281
|
||||||
|
282 |█████████████████████████████████▍ 282
|
||||||
|
283 |█████████████████████████████████▌ 283
|
||||||
|
284 |█████████████████████████████████▋ 284
|
||||||
|
285 |█████████████████████████████████▊ 285
|
||||||
|
286 |█████████████████████████████████▉ 286
|
||||||
|
287 |██████████████████████████████████ 287
|
||||||
|
288 |██████████████████████████████████▏ 288
|
||||||
|
289 |██████████████████████████████████▎ 289
|
||||||
|
290 |██████████████████████████████████▍ 290
|
||||||
|
291 |██████████████████████████████████▌ 291
|
||||||
|
292 |██████████████████████████████████▋ 292
|
||||||
|
293 |██████████████████████████████████▊ 293
|
||||||
|
294 |██████████████████████████████████▉ 294
|
||||||
|
295 |███████████████████████████████████ 295
|
||||||
|
296 |███████████████████████████████████▏ 296
|
||||||
|
297 |███████████████████████████████████▎ 297
|
||||||
|
298 |███████████████████████████████████▍ 298
|
||||||
|
299 |███████████████████████████████████▌ 299
|
||||||
|
300 |███████████████████████████████████▋ 300
|
||||||
|
301 |███████████████████████████████████▋ 301
|
||||||
|
302 |███████████████████████████████████▊ 302
|
||||||
|
303 |███████████████████████████████████▉ 303
|
||||||
|
304 |████████████████████████████████████ 304
|
||||||
|
305 |████████████████████████████████████▏ 305
|
||||||
|
306 |████████████████████████████████████▎ 306
|
||||||
|
307 |████████████████████████████████████▍ 307
|
||||||
|
308 |████████████████████████████████████▌ 308
|
||||||
|
309 |████████████████████████████████████▋ 309
|
||||||
|
310 |████████████████████████████████████▊ 310
|
||||||
|
311 |████████████████████████████████████▉ 311
|
||||||
|
312 |█████████████████████████████████████ 312
|
||||||
|
313 |█████████████████████████████████████▏ 313
|
||||||
|
314 |█████████████████████████████████████▎ 314
|
||||||
|
315 |█████████████████████████████████████▍ 315
|
||||||
|
316 |█████████████████████████████████████▌ 316
|
||||||
|
317 |█████████████████████████████████████▋ 317
|
||||||
|
318 |█████████████████████████████████████▊ 318
|
||||||
|
319 |█████████████████████████████████████▉ 319
|
||||||
|
320 |██████████████████████████████████████ 320
|
||||||
|
321 |██████████████████████████████████████ 320
|
||||||
|
322 |█████████████████████████████████████▉ 319
|
||||||
|
323 |█████████████████████████████████████▊ 318
|
||||||
|
324 |█████████████████████████████████████▋ 317
|
||||||
|
325 |█████████████████████████████████████▌ 316
|
||||||
|
326 |█████████████████████████████████████▍ 315
|
||||||
|
327 |█████████████████████████████████████▎ 314
|
||||||
|
328 |█████████████████████████████████████▏ 313
|
||||||
|
329 |█████████████████████████████████████ 312
|
||||||
|
330 |████████████████████████████████████▉ 311
|
||||||
|
331 |████████████████████████████████████▊ 310
|
||||||
|
332 |████████████████████████████████████▋ 309
|
||||||
|
333 |████████████████████████████████████▌ 308
|
||||||
|
334 |████████████████████████████████████▍ 307
|
||||||
|
335 |████████████████████████████████████▎ 306
|
||||||
|
336 |████████████████████████████████████▏ 305
|
||||||
|
337 |████████████████████████████████████ 304
|
||||||
|
338 |███████████████████████████████████▉ 303
|
||||||
|
339 |███████████████████████████████████▊ 302
|
||||||
|
340 |███████████████████████████████████▋ 301
|
||||||
|
341 |███████████████████████████████████▋ 300
|
||||||
|
342 |███████████████████████████████████▌ 299
|
||||||
|
343 |███████████████████████████████████▍ 298
|
||||||
|
344 |███████████████████████████████████▎ 297
|
||||||
|
345 |███████████████████████████████████▏ 296
|
||||||
|
346 |███████████████████████████████████ 295
|
||||||
|
347 |██████████████████████████████████▉ 294
|
||||||
|
348 |██████████████████████████████████▊ 293
|
||||||
|
349 |██████████████████████████████████▋ 292
|
||||||
|
350 |██████████████████████████████████▌ 291
|
||||||
|
351 |██████████████████████████████████▍ 290
|
||||||
|
352 |██████████████████████████████████▎ 289
|
||||||
|
353 |██████████████████████████████████▏ 288
|
||||||
|
354 |██████████████████████████████████ 287
|
||||||
|
355 |█████████████████████████████████▉ 286
|
||||||
|
356 |█████████████████████████████████▊ 285
|
||||||
|
357 |█████████████████████████████████▋ 284
|
||||||
|
358 |█████████████████████████████████▌ 283
|
||||||
|
359 |█████████████████████████████████▍ 282
|
||||||
|
360 |█████████████████████████████████▎ 281
|
||||||
|
361 |█████████████████████████████████▎ 280
|
||||||
|
362 |█████████████████████████████████▏ 279
|
||||||
|
363 |█████████████████████████████████ 278
|
||||||
|
364 |████████████████████████████████▉ 277
|
||||||
|
365 |████████████████████████████████▊ 276
|
||||||
|
366 |████████████████████████████████▋ 275
|
||||||
|
367 |████████████████████████████████▌ 274
|
||||||
|
368 |████████████████████████████████▍ 273
|
||||||
|
369 |████████████████████████████████▎ 272
|
||||||
|
370 |████████████████████████████████▏ 271
|
||||||
|
371 |████████████████████████████████ 270
|
||||||
|
372 |███████████████████████████████▉ 269
|
||||||
|
373 |███████████████████████████████▊ 268
|
||||||
|
374 |███████████████████████████████▋ 267
|
||||||
|
375 |███████████████████████████████▌ 266
|
||||||
|
376 |███████████████████████████████▍ 265
|
||||||
|
377 |███████████████████████████████▎ 264
|
||||||
|
378 |███████████████████████████████▏ 263
|
||||||
|
379 |███████████████████████████████ 262
|
||||||
|
380 |██████████████████████████████▉ 261
|
||||||
|
381 |██████████████████████████████▉ 260
|
||||||
|
382 |██████████████████████████████▊ 259
|
||||||
|
383 |██████████████████████████████▋ 258
|
||||||
|
384 |██████████████████████████████▌ 257
|
||||||
|
385 |██████████████████████████████▍ 256
|
||||||
|
386 |██████████████████████████████▎ 255
|
||||||
|
387 |██████████████████████████████▏ 254
|
||||||
|
388 |██████████████████████████████ 253
|
||||||
|
389 |█████████████████████████████▉ 252
|
||||||
|
390 |█████████████████████████████▊ 251
|
||||||
|
391 |█████████████████████████████▋ 250
|
||||||
|
392 |█████████████████████████████▌ 249
|
||||||
|
393 |█████████████████████████████▍ 248
|
||||||
|
394 |█████████████████████████████▎ 247
|
||||||
|
395 |█████████████████████████████▏ 246
|
||||||
|
396 |█████████████████████████████ 245
|
||||||
|
397 |████████████████████████████▉ 244
|
||||||
|
398 |████████████████████████████▊ 243
|
||||||
|
399 |████████████████████████████▋ 242
|
||||||
|
400 |████████████████████████████▌ 241
|
||||||
|
401 |████████████████████████████▌ 240
|
||||||
|
402 |████████████████████████████▍ 239
|
||||||
|
403 |████████████████████████████▎ 238
|
||||||
|
404 |████████████████████████████▏ 237
|
||||||
|
405 |████████████████████████████ 236
|
||||||
|
406 |███████████████████████████▉ 235
|
||||||
|
407 |███████████████████████████▊ 234
|
||||||
|
408 |███████████████████████████▋ 233
|
||||||
|
409 |███████████████████████████▌ 232
|
||||||
|
410 |███████████████████████████▍ 231
|
||||||
|
411 |███████████████████████████▎ 230
|
||||||
|
412 |███████████████████████████▏ 229
|
||||||
|
413 |███████████████████████████ 228
|
||||||
|
414 |██████████████████████████▉ 227
|
||||||
|
415 |██████████████████████████▊ 226
|
||||||
|
416 |██████████████████████████▋ 225
|
||||||
|
417 |██████████████████████████▌ 224
|
||||||
|
418 |██████████████████████████▍ 223
|
||||||
|
419 |██████████████████████████▎ 222
|
||||||
|
420 |██████████████████████████▏ 221
|
||||||
|
421 |██████████████████████████▏ 220
|
||||||
|
422 |██████████████████████████ 219
|
||||||
|
423 |█████████████████████████▉ 218
|
||||||
|
424 |█████████████████████████▊ 217
|
||||||
|
425 |█████████████████████████▋ 216
|
||||||
|
426 |█████████████████████████▌ 215
|
||||||
|
427 |█████████████████████████▍ 214
|
||||||
|
428 |█████████████████████████▎ 213
|
||||||
|
429 |█████████████████████████▏ 212
|
||||||
|
430 |█████████████████████████ 211
|
||||||
|
431 |████████████████████████▉ 210
|
||||||
|
432 |████████████████████████▊ 209
|
||||||
|
433 |████████████████████████▋ 208
|
||||||
|
434 |████████████████████████▌ 207
|
||||||
|
435 |████████████████████████▍ 206
|
||||||
|
436 |████████████████████████▎ 205
|
||||||
|
437 |████████████████████████▏ 204
|
||||||
|
438 |████████████████████████ 203
|
||||||
|
439 |███████████████████████▉ 202
|
||||||
|
440 |███████████████████████▊ 201
|
||||||
|
441 |███████████████████████▊ 200
|
||||||
|
442 |███████████████████████▋ 199
|
||||||
|
443 |███████████████████████▌ 198
|
||||||
|
444 |███████████████████████▍ 197
|
||||||
|
445 |███████████████████████▎ 196
|
||||||
|
446 |███████████████████████▏ 195
|
||||||
|
447 |███████████████████████ 194
|
||||||
|
448 |██████████████████████▉ 193
|
||||||
|
449 |██████████████████████▊ 192
|
||||||
|
450 |██████████████████████▋ 191
|
||||||
|
451 |██████████████████████▌ 190
|
||||||
|
452 |██████████████████████▍ 189
|
||||||
|
453 |██████████████████████▎ 188
|
||||||
|
454 |██████████████████████▏ 187
|
||||||
|
455 |██████████████████████ 186
|
||||||
|
456 |█████████████████████▉ 185
|
||||||
|
457 |█████████████████████▊ 184
|
||||||
|
458 |█████████████████████▋ 183
|
||||||
|
459 |█████████████████████▌ 182
|
||||||
|
460 |█████████████████████▍ 181
|
||||||
|
461 |█████████████████████▍ 180
|
||||||
|
462 |█████████████████████▎ 179
|
||||||
|
463 |█████████████████████▏ 178
|
||||||
|
464 |█████████████████████ 177
|
||||||
|
465 |████████████████████▉ 176
|
||||||
|
466 |████████████████████▊ 175
|
||||||
|
467 |████████████████████▋ 174
|
||||||
|
468 |████████████████████▌ 173
|
||||||
|
469 |████████████████████▍ 172
|
||||||
|
470 |████████████████████▎ 171
|
||||||
|
471 |████████████████████▏ 170
|
||||||
|
472 |████████████████████ 169
|
||||||
|
473 |███████████████████▉ 168
|
||||||
|
474 |███████████████████▊ 167
|
||||||
|
475 |███████████████████▋ 166
|
||||||
|
476 |███████████████████▌ 165
|
||||||
|
477 |███████████████████▍ 164
|
||||||
|
478 |███████████████████▎ 163
|
||||||
|
479 |███████████████████▏ 162
|
||||||
|
480 |███████████████████ 161
|
||||||
|
481 |███████████████████ 160
|
||||||
|
482 |██████████████████▉ 159
|
||||||
|
483 |██████████████████▊ 158
|
||||||
|
484 |██████████████████▋ 157
|
||||||
|
485 |██████████████████▌ 156
|
||||||
|
486 |██████████████████▍ 155
|
||||||
|
487 |██████████████████▎ 154
|
||||||
|
488 |██████████████████▏ 153
|
||||||
|
489 |██████████████████ 152
|
||||||
|
490 |█████████████████▉ 151
|
||||||
|
491 |█████████████████▊ 150
|
||||||
|
492 |█████████████████▋ 149
|
||||||
|
493 |█████████████████▌ 148
|
||||||
|
494 |█████████████████▍ 147
|
||||||
|
495 |█████████████████▎ 146
|
||||||
|
496 |█████████████████▏ 145
|
||||||
|
497 |█████████████████ 144
|
||||||
|
498 |████████████████▉ 143
|
||||||
|
499 |████████████████▊ 142
|
||||||
|
500 |████████████████▋ 141
|
||||||
|
501 |████████████████▋ 140
|
||||||
|
502 |████████████████▌ 139
|
||||||
|
503 |████████████████▍ 138
|
||||||
|
504 |████████████████▎ 137
|
||||||
|
505 |████████████████▏ 136
|
||||||
|
506 |████████████████ 135
|
||||||
|
507 |███████████████▉ 134
|
||||||
|
508 |███████████████▊ 133
|
||||||
|
509 |███████████████▋ 132
|
||||||
|
510 |███████████████▌ 131
|
||||||
|
511 |███████████████▍ 130
|
||||||
|
512 |███████████████▎ 129
|
||||||
|
513 |███████████████▏ 128
|
||||||
|
514 |███████████████ 127
|
||||||
|
515 |██████████████▉ 126
|
||||||
|
516 |██████████████▊ 125
|
||||||
|
517 |██████████████▋ 124
|
||||||
|
518 |██████████████▌ 123
|
||||||
|
519 |██████████████▍ 122
|
||||||
|
520 |██████████████▎ 121
|
||||||
|
521 |██████████████▎ 120
|
||||||
|
522 |██████████████▏ 119
|
||||||
|
523 |██████████████ 118
|
||||||
|
524 |█████████████▉ 117
|
||||||
|
525 |█████████████▊ 116
|
||||||
|
526 |█████████████▋ 115
|
||||||
|
527 |█████████████▌ 114
|
||||||
|
528 |█████████████▍ 113
|
||||||
|
529 |█████████████▎ 112
|
||||||
|
530 |█████████████▏ 111
|
||||||
|
531 |█████████████ 110
|
||||||
|
532 |████████████▉ 109
|
||||||
|
533 |████████████▊ 108
|
||||||
|
534 |████████████▋ 107
|
||||||
|
535 |████████████▌ 106
|
||||||
|
536 |████████████▍ 105
|
||||||
|
537 |████████████▎ 104
|
||||||
|
538 |████████████▏ 103
|
||||||
|
539 |████████████ 102
|
||||||
|
540 |███████████▉ 101
|
||||||
|
541 |███████████▉ 100
|
||||||
|
542 |███████████▊ 99
|
||||||
|
543 |███████████▋ 98
|
||||||
|
544 |███████████▌ 97
|
||||||
|
545 |███████████▍ 96
|
||||||
|
546 |███████████▎ 95
|
||||||
|
547 |███████████▏ 94
|
||||||
|
548 |███████████ 93
|
||||||
|
549 |██████████▉ 92
|
||||||
|
550 |██████████▊ 91
|
||||||
|
551 |██████████▋ 90
|
||||||
|
552 |██████████▌ 89
|
||||||
|
553 |██████████▍ 88
|
||||||
|
554 |██████████▎ 87
|
||||||
|
555 |██████████▏ 86
|
||||||
|
556 |██████████ 85
|
||||||
|
557 |█████████▉ 84
|
||||||
|
558 |█████████▊ 83
|
||||||
|
559 |█████████▋ 82
|
||||||
|
560 |█████████▌ 81
|
||||||
|
561 |█████████▌ 80
|
||||||
|
562 |█████████▍ 79
|
||||||
|
563 |█████████▎ 78
|
||||||
|
564 |█████████▏ 77
|
||||||
|
565 |█████████ 76
|
||||||
|
566 |████████▉ 75
|
||||||
|
567 |████████▊ 74
|
||||||
|
568 |████████▋ 73
|
||||||
|
569 |████████▌ 72
|
||||||
|
570 |████████▍ 71
|
||||||
|
571 |████████▎ 70
|
||||||
|
572 |████████▏ 69
|
||||||
|
573 |████████ 68
|
||||||
|
574 |███████▉ 67
|
||||||
|
575 |███████▊ 66
|
||||||
|
576 |███████▋ 65
|
||||||
|
577 |███████▌ 64
|
||||||
|
578 |███████▍ 63
|
||||||
|
579 |███████▎ 62
|
||||||
|
580 |███████▏ 61
|
||||||
|
581 |███████▏ 60
|
||||||
|
582 |███████ 59
|
||||||
|
583 |██████▉ 58
|
||||||
|
584 |██████▊ 57
|
||||||
|
585 |██████▋ 56
|
||||||
|
586 |██████▌ 55
|
||||||
|
587 |██████▍ 54
|
||||||
|
588 |██████▎ 53
|
||||||
|
589 |██████▏ 52
|
||||||
|
590 |██████ 51
|
||||||
|
591 |█████▉ 50
|
||||||
|
592 |█████▊ 49
|
||||||
|
593 |█████▋ 48
|
||||||
|
594 |█████▌ 47
|
||||||
|
595 |█████▍ 46
|
||||||
|
596 |█████▎ 45
|
||||||
|
597 |█████▏ 44
|
||||||
|
598 |█████ 43
|
||||||
|
599 |████▉ 42
|
||||||
|
600 |████▊ 41
|
||||||
|
601 |████▊ 40
|
||||||
|
602 |████▋ 39
|
||||||
|
603 |████▌ 38
|
||||||
|
604 |████▍ 37
|
||||||
|
605 |████▎ 36
|
||||||
|
606 |████▏ 35
|
||||||
|
607 |████ 34
|
||||||
|
608 |███▉ 33
|
||||||
|
609 |███▊ 32
|
||||||
|
610 |███▋ 31
|
||||||
|
611 |███▌ 30
|
||||||
|
612 |███▍ 29
|
||||||
|
613 |███▎ 28
|
||||||
|
614 |███▏ 27
|
||||||
|
615 |███ 26
|
||||||
|
616 |██▉ 25
|
||||||
|
617 |██▊ 24
|
||||||
|
618 |██▋ 23
|
||||||
|
619 |██▌ 22
|
||||||
|
620 |██▍ 21
|
||||||
|
621 |██▍ 20
|
||||||
|
622 |██▎ 19
|
||||||
|
623 |██▏ 18
|
||||||
|
624 |██ 17
|
||||||
|
625 |█▉ 16
|
||||||
|
626 |█▊ 15
|
||||||
|
627 |█▋ 14
|
||||||
|
628 |█▌ 13
|
||||||
|
629 |█▍ 12
|
||||||
|
630 |█▎ 11
|
||||||
|
631 |█▏ 10
|
||||||
|
632 |█ 9
|
||||||
|
633 |▉ 8
|
||||||
|
634 |▊ 7
|
||||||
|
635 |▋ 6
|
||||||
|
636 |▌ 5
|
||||||
|
637 |▍ 4
|
||||||
|
638 |▎ 3
|
||||||
|
639 |▏ 2
|
||||||
|
>= 640 | 1
|
||||||
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* This file and its contents are supplied under the terms of the
|
||||||
|
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
* You may only use this file in accordance with the terms of version
|
||||||
|
* 1.0 of the CDDL.
|
||||||
|
*
|
||||||
|
* A full copy of the text of the CDDL should have accompanied this
|
||||||
|
* source. A copy of the CDDL is also available via the Internet at
|
||||||
|
* http://www.illumos.org/license/CDDL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option agghist
|
||||||
|
#pragma D option quiet
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
@["demerit"] = sum(-10);
|
||||||
|
@["wtf"] = sum(10);
|
||||||
|
@["bot"] = sum(20);
|
||||||
|
|
||||||
|
@bagnoogle["SOAP/XML"] = sum(1);
|
||||||
|
@bagnoogle["XACML store"] = sum(5);
|
||||||
|
@bagnoogle["SAML token"] = sum(6);
|
||||||
|
|
||||||
|
@stalloogle["breakfast"] = sum(-5);
|
||||||
|
@stalloogle["non-diet pepsi"] = sum(-20);
|
||||||
|
@stalloogle["parrot"] = sum(-100);
|
||||||
|
|
||||||
|
printa(@);
|
||||||
|
printa(@bagnoogle);
|
||||||
|
printa(@stalloogle);
|
||||||
|
|
||||||
|
printf("\nzoomed:");
|
||||||
|
|
||||||
|
setopt("aggzoom");
|
||||||
|
printa(@);
|
||||||
|
printa(@bagnoogle);
|
||||||
|
printa(@stalloogle);
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
|||||||
|
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
demerit @@@@@| -10
|
||||||
|
wtf |@@@@@ 10
|
||||||
|
bot |@@@@@@@@@@ 20
|
||||||
|
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
SOAP/XML |@@@ 1
|
||||||
|
XACML store |@@@@@@@@@@@@@@@@@ 5
|
||||||
|
SAML token |@@@@@@@@@@@@@@@@@@@@ 6
|
||||||
|
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
parrot @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| -100
|
||||||
|
non-diet pepsi @@@@@@| -20
|
||||||
|
breakfast @@| -5
|
||||||
|
|
||||||
|
zoomed:
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
demerit @@@@@@@@@@| -10
|
||||||
|
wtf |@@@@@@@@@@ 10
|
||||||
|
bot |@@@@@@@@@@@@@@@@@@@ 20
|
||||||
|
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
SOAP/XML |@@@@@@@ 1
|
||||||
|
XACML store |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5
|
||||||
|
SAML token |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6
|
||||||
|
|
||||||
|
|
||||||
|
key ------------- Distribution ------------- count
|
||||||
|
parrot @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| -100
|
||||||
|
non-diet pepsi @@@@@@@@| -20
|
||||||
|
breakfast @@| -5
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file and its contents are supplied under the terms of the
|
||||||
|
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
* You may only use this file in accordance with the terms of version
|
||||||
|
* 1.0 of the CDDL.
|
||||||
|
*
|
||||||
|
* A full copy of the text of the CDDL should have accompanied this
|
||||||
|
* source. A copy of the CDDL is also available via the Internet at
|
||||||
|
* http://www.illumos.org/license/CDDL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option aggpack
|
||||||
|
#pragma D option encoding=ascii
|
||||||
|
#pragma D option quiet
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
@x = quantize(1 << 32);
|
||||||
|
@y[1] = quantize(1);
|
||||||
|
@z["mumble"] = quantize(1);
|
||||||
|
@xx["foo", (char)1, (short)2, (long)3] = quantize(1);
|
||||||
|
|
||||||
|
@neg = lquantize(-10, -10, 20, 1, -1);
|
||||||
|
@neg = lquantize(-5, -10, 20, 1, 1);
|
||||||
|
@neg = lquantize(0, -10, 20, 1, 1);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
{
|
||||||
|
@a[i] = quantize(0, i);
|
||||||
|
@a[i] = quantize(1, 100 - i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i > 100/
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
{
|
||||||
|
setopt("aggzoom", "true");
|
||||||
|
printa(@neg);
|
||||||
|
setopt("aggzoom", "false");
|
||||||
|
printa(@neg);
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
|
||||||
|
|
||||||
|
min .--------------------------------. max | count
|
||||||
|
< -10 : V X X : >= 20 | 1
|
||||||
|
|
||||||
|
|
||||||
|
min .--------------------------------. max | count
|
||||||
|
< -10 : v x x : >= 20 | 1
|
||||||
|
|
||||||
|
|
||||||
|
min .---. max | count
|
||||||
|
2147483648 : X : 8589934592 | 1
|
||||||
|
|
||||||
|
key min .---. max | count
|
||||||
|
1 0 : X : 2 | 1
|
||||||
|
|
||||||
|
key min .---. max | count
|
||||||
|
mumble 0 : X : 2 | 1
|
||||||
|
|
||||||
|
key min .---. max | count
|
||||||
|
foo 1 2 3 0 : X : 2 | 1
|
||||||
|
|
||||||
|
key min .---. max | count
|
||||||
|
100 0 :X : 2 | 100
|
||||||
|
99 0 :X_ : 2 | 100
|
||||||
|
98 0 :X_ : 2 | 100
|
||||||
|
97 0 :X_ : 2 | 100
|
||||||
|
96 0 :X_ : 2 | 100
|
||||||
|
95 0 :X_ : 2 | 100
|
||||||
|
94 0 :X_ : 2 | 100
|
||||||
|
93 0 :X_ : 2 | 100
|
||||||
|
92 0 :X_ : 2 | 100
|
||||||
|
91 0 :X_ : 2 | 100
|
||||||
|
90 0 :X_ : 2 | 100
|
||||||
|
89 0 :X_ : 2 | 100
|
||||||
|
88 0 :X_ : 2 | 100
|
||||||
|
87 0 :X_ : 2 | 100
|
||||||
|
86 0 :X_ : 2 | 100
|
||||||
|
85 0 :X_ : 2 | 100
|
||||||
|
84 0 :X_ : 2 | 100
|
||||||
|
83 0 :X_ : 2 | 100
|
||||||
|
82 0 :X_ : 2 | 100
|
||||||
|
81 0 :X_ : 2 | 100
|
||||||
|
80 0 :X_ : 2 | 100
|
||||||
|
79 0 :X_ : 2 | 100
|
||||||
|
78 0 :xx : 2 | 100
|
||||||
|
77 0 :xx : 2 | 100
|
||||||
|
76 0 :xx : 2 | 100
|
||||||
|
75 0 :xx : 2 | 100
|
||||||
|
74 0 :xx : 2 | 100
|
||||||
|
73 0 :xx : 2 | 100
|
||||||
|
72 0 :xx : 2 | 100
|
||||||
|
71 0 :xx : 2 | 100
|
||||||
|
70 0 :xx : 2 | 100
|
||||||
|
69 0 :xx : 2 | 100
|
||||||
|
68 0 :xx : 2 | 100
|
||||||
|
67 0 :xx : 2 | 100
|
||||||
|
66 0 :xx : 2 | 100
|
||||||
|
65 0 :xx : 2 | 100
|
||||||
|
64 0 :xx : 2 | 100
|
||||||
|
63 0 :xx : 2 | 100
|
||||||
|
62 0 :xx : 2 | 100
|
||||||
|
61 0 :xx : 2 | 100
|
||||||
|
60 0 :xx : 2 | 100
|
||||||
|
59 0 :xx : 2 | 100
|
||||||
|
58 0 :xx : 2 | 100
|
||||||
|
57 0 :xx : 2 | 100
|
||||||
|
56 0 :xx : 2 | 100
|
||||||
|
55 0 :xx : 2 | 100
|
||||||
|
54 0 :xx : 2 | 100
|
||||||
|
53 0 :xx : 2 | 100
|
||||||
|
52 0 :xx : 2 | 100
|
||||||
|
51 0 :xx : 2 | 100
|
||||||
|
50 0 :xx : 2 | 100
|
||||||
|
49 0 :xx : 2 | 100
|
||||||
|
48 0 :xx : 2 | 100
|
||||||
|
47 0 :xx : 2 | 100
|
||||||
|
46 0 :xx : 2 | 100
|
||||||
|
45 0 :xx : 2 | 100
|
||||||
|
44 0 :xx : 2 | 100
|
||||||
|
43 0 :xx : 2 | 100
|
||||||
|
42 0 :xx : 2 | 100
|
||||||
|
41 0 :xx : 2 | 100
|
||||||
|
40 0 :xx : 2 | 100
|
||||||
|
39 0 :xx : 2 | 100
|
||||||
|
38 0 :xx : 2 | 100
|
||||||
|
37 0 :xx : 2 | 100
|
||||||
|
36 0 :xx : 2 | 100
|
||||||
|
35 0 :xx : 2 | 100
|
||||||
|
34 0 :xx : 2 | 100
|
||||||
|
33 0 :xx : 2 | 100
|
||||||
|
32 0 :xx : 2 | 100
|
||||||
|
31 0 :xx : 2 | 100
|
||||||
|
30 0 :xx : 2 | 100
|
||||||
|
29 0 :xx : 2 | 100
|
||||||
|
28 0 :xx : 2 | 100
|
||||||
|
27 0 :xx : 2 | 100
|
||||||
|
26 0 :xx : 2 | 100
|
||||||
|
25 0 :xx : 2 | 100
|
||||||
|
24 0 :xx : 2 | 100
|
||||||
|
23 0 :xx : 2 | 100
|
||||||
|
22 0 :xx : 2 | 100
|
||||||
|
21 0 :_X : 2 | 100
|
||||||
|
20 0 :_X : 2 | 100
|
||||||
|
19 0 :_X : 2 | 100
|
||||||
|
18 0 :_X : 2 | 100
|
||||||
|
17 0 :_X : 2 | 100
|
||||||
|
16 0 :_X : 2 | 100
|
||||||
|
15 0 :_X : 2 | 100
|
||||||
|
14 0 :_X : 2 | 100
|
||||||
|
13 0 :_X : 2 | 100
|
||||||
|
12 0 :_X : 2 | 100
|
||||||
|
11 0 :_X : 2 | 100
|
||||||
|
10 0 :_X : 2 | 100
|
||||||
|
9 0 :_X : 2 | 100
|
||||||
|
8 0 :_X : 2 | 100
|
||||||
|
7 0 :_X : 2 | 100
|
||||||
|
6 0 :_X : 2 | 100
|
||||||
|
5 0 :_X : 2 | 100
|
||||||
|
4 0 :_X : 2 | 100
|
||||||
|
3 0 :_X : 2 | 100
|
||||||
|
2 0 :_X : 2 | 100
|
||||||
|
1 0 :_X : 2 | 100
|
||||||
|
0 0 : X : 2 | 100
|
@ -0,0 +1,75 @@
|
|||||||
|
#
|
||||||
|
# This file and its contents are supplied under the terms of the
|
||||||
|
# Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
# You may only use this file in accordance with the terms of version
|
||||||
|
# 1.0 of the CDDL.
|
||||||
|
#
|
||||||
|
# A full copy of the text of the CDDL should have accompanied this
|
||||||
|
# source. A copy of the CDDL is also available via the Internet at
|
||||||
|
# http://www.illumos.org/license/CDDL.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
|
||||||
|
let width=8
|
||||||
|
|
||||||
|
function outputchar
|
||||||
|
{
|
||||||
|
banner $3 | awk -v line=$1 -v pos=$2 -v width=$width '{ \
|
||||||
|
for (i = 1; i <= length($0); i++) { \
|
||||||
|
if (substr($0, i, 1) == " ") \
|
||||||
|
continue; \
|
||||||
|
printf("\t@letter%d[%d] = lquantize(%d, 0, 40, 1);\n", \
|
||||||
|
line, NR, i + (pos * width));
|
||||||
|
} \
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function outputstr
|
||||||
|
{
|
||||||
|
let pos=0;
|
||||||
|
let line=0
|
||||||
|
|
||||||
|
printf "#pragma D option aggpack\n#pragma D option aggsortkey\n"
|
||||||
|
|
||||||
|
printf "BEGIN\n{\n"
|
||||||
|
for c in `echo "$1" | awk '{ \
|
||||||
|
for (i = 1; i <= length($0); i++) { \
|
||||||
|
c = substr($0, i, 1); \
|
||||||
|
printf("%s\n", c == " " ? "space" : \
|
||||||
|
c == "\n" ? "newline" : c); \
|
||||||
|
} \
|
||||||
|
}'`; do
|
||||||
|
if [[ "$c" == "space" ]]; then
|
||||||
|
let line=line+1
|
||||||
|
let pos=0
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
outputchar $line $pos $c
|
||||||
|
let pos=pos+1
|
||||||
|
done
|
||||||
|
|
||||||
|
let i=0
|
||||||
|
|
||||||
|
while [[ $i -le $line ]]; do
|
||||||
|
printf "\tprinta(@letter%d);\n" $i
|
||||||
|
let i=i+1
|
||||||
|
done
|
||||||
|
printf "\texit(0);\n}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
dtrace -qs /dev/stdin -x encoding=utf8 <<EOF
|
||||||
|
`outputstr "why must i do this"`
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dtrace -qs /dev/stdin -x encoding=ascii -x aggzoom <<EOF
|
||||||
|
`outputstr "i am not well"`
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dtrace -qs /dev/stdin -x encoding=utf8 -x aggzoom <<EOF
|
||||||
|
`outputstr "send help"`
|
||||||
|
EOF
|
||||||
|
|
@ -0,0 +1,102 @@
|
|||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : ▂ ▂ ▂ ▂ ▂ ▂ : >= 40 | 6
|
||||||
|
3 < 0 : ▂ ▂ ▂ ▂ ▂ ▂ : >= 40 | 6
|
||||||
|
4 < 0 : ▂ ▂ ▂▂▂▂▂▂ ▂ : >= 40 | 9
|
||||||
|
5 < 0 : ▂ ▂▂ ▂ ▂ ▂ ▂ : >= 40 | 7
|
||||||
|
6 < 0 : ▂▂ ▂▂ ▂ ▂ ▂ : >= 40 | 7
|
||||||
|
7 < 0 : ▂ ▂ ▂ ▂ ▂ : >= 40 | 5
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : ▂ ▂ ▂ ▂ ▂▂▂▂ ▂▂▂▂▂ : >= 40 | 13
|
||||||
|
3 < 0 : ▂▂ ▂▂ ▂ ▂ ▂ ▂ : >= 40 | 8
|
||||||
|
4 < 0 : ▂ ▂▂ ▂ ▂ ▂ ▂▂▂▂ ▂ : >= 40 | 11
|
||||||
|
5 < 0 : ▂ ▂ ▂ ▂ ▂ ▂ : >= 40 | 6
|
||||||
|
6 < 0 : ▂ ▂ ▂ ▂ ▂ ▂ ▂ : >= 40 | 7
|
||||||
|
7 < 0 : ▂ ▂ ▂▂▂▂ ▂▂▂▂ ▂ : >= 40 | 11
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : █ : >= 40 | 1
|
||||||
|
3 < 0 : █ : >= 40 | 1
|
||||||
|
4 < 0 : █ : >= 40 | 1
|
||||||
|
5 < 0 : █ : >= 40 | 1
|
||||||
|
6 < 0 : █ : >= 40 | 1
|
||||||
|
7 < 0 : █ : >= 40 | 1
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : ▂▂▂▂▂ ▂▂▂▂ : >= 40 | 9
|
||||||
|
3 < 0 : ▃ ▃ ▃ ▃ : >= 40 | 4
|
||||||
|
4 < 0 : ▃ ▃ ▃ ▃ : >= 40 | 4
|
||||||
|
5 < 0 : ▃ ▃ ▃ ▃ : >= 40 | 4
|
||||||
|
6 < 0 : ▃ ▃ ▃ ▃ : >= 40 | 4
|
||||||
|
7 < 0 : ▂▂▂▂▂ ▂▂▂▂ : >= 40 | 9
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : ▂▂▂▂▂ ▂ ▂ ▂ ▂▂▂▂ : >= 40 | 12
|
||||||
|
3 < 0 : ▂ ▂ ▂ ▂ ▂ : >= 40 | 5
|
||||||
|
4 < 0 : ▂ ▂▂▂▂▂▂ ▂ ▂▂▂▂ : >= 40 | 12
|
||||||
|
5 < 0 : ▂ ▂ ▂ ▂ ▂ : >= 40 | 5
|
||||||
|
6 < 0 : ▂ ▂ ▂ ▂ ▂ ▂ : >= 40 | 6
|
||||||
|
7 < 0 : ▂ ▂ ▂ ▂ ▂▂▂▂ : >= 40 | 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : X : >= 40 | 1
|
||||||
|
3 < 0 : X : >= 40 | 1
|
||||||
|
4 < 0 : X : >= 40 | 1
|
||||||
|
5 < 0 : X : >= 40 | 1
|
||||||
|
6 < 0 : X : >= 40 | 1
|
||||||
|
7 < 0 : X : >= 40 | 1
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : XX X X : >= 40 | 4
|
||||||
|
3 < 0 : X X XX XX : >= 40 | 6
|
||||||
|
4 < 0 : X X X XX X : >= 40 | 6
|
||||||
|
5 < 0 : XXXXXX X X : >= 40 | 8
|
||||||
|
6 < 0 : X X X X : >= 40 | 4
|
||||||
|
7 < 0 : X X X X : >= 40 | 4
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : X X XXXX XXXXX : >= 40 | 11
|
||||||
|
3 < 0 : XX X X X X : >= 40 | 6
|
||||||
|
4 < 0 : X X X X X X : >= 40 | 6
|
||||||
|
5 < 0 : X X X X X X : >= 40 | 6
|
||||||
|
6 < 0 : X XX X X X : >= 40 | 6
|
||||||
|
7 < 0 : X X XXXX X : >= 40 | 7
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : X X XXXXXX X X : >= 40 | 10
|
||||||
|
3 < 0 : X X X X X : >= 40 | 5
|
||||||
|
4 < 0 : X X XXXXX X X : >= 40 | 9
|
||||||
|
5 < 0 : X XX X X X X : >= 40 | 7
|
||||||
|
6 < 0 : XX XX X X X : >= 40 | 7
|
||||||
|
7 < 0 : X X XXXXXX XXXXXX XXXXXX : >= 40 | 20
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : ████ ██████ █ █ █████ : >= 40 | 17
|
||||||
|
3 < 0 : █ █ ██ █ █ █ : >= 40 | 7
|
||||||
|
4 < 0 : ████ █████ █ █ █ █ █ : >= 40 | 14
|
||||||
|
5 < 0 : █ █ █ █ █ █ █ : >= 40 | 7
|
||||||
|
6 < 0 : █ █ █ █ ██ █ █ : >= 40 | 8
|
||||||
|
7 < 0 : ████ ██████ █ █ █████ : >= 40 | 17
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
2 < 0 : █ █ ██████ █ █████ : >= 40 | 14
|
||||||
|
3 < 0 : █ █ █ █ █ █ : >= 40 | 6
|
||||||
|
4 < 0 : ██████ █████ █ █ █ : >= 40 | 14
|
||||||
|
5 < 0 : █ █ █ █ █████ : >= 40 | 9
|
||||||
|
6 < 0 : █ █ █ █ █ : >= 40 | 5
|
||||||
|
7 < 0 : █ █ ██████ ██████ █ : >= 40 | 15
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* This file and its contents are supplied under the terms of the
|
||||||
|
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
* You may only use this file in accordance with the terms of version
|
||||||
|
* 1.0 of the CDDL.
|
||||||
|
*
|
||||||
|
* A full copy of the text of the CDDL should have accompanied this
|
||||||
|
* source. A copy of the CDDL is also available via the Internet at
|
||||||
|
* http://www.illumos.org/license/CDDL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option quiet
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i++ < 30/
|
||||||
|
{
|
||||||
|
@[1] = lquantize(i, 0, 40, 1, 1000);
|
||||||
|
@[2] = lquantize(i, 0, 40, 1, 1000);
|
||||||
|
@[3] = lquantize(i, 0, 40, 1, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i == 40/
|
||||||
|
{
|
||||||
|
@[1] = lquantize(0, 0, 40, 1, 1);
|
||||||
|
@[1] = lquantize(i, 0, 40, 1, 2000);
|
||||||
|
@[2] = lquantize(0, 0, 40, 1, 1);
|
||||||
|
@[2] = lquantize(i, 0, 40, 1, 2000);
|
||||||
|
@[3] = lquantize(0, 0, 40, 1, 1);
|
||||||
|
@[3] = lquantize(i, 0, 40, 1, 2000);
|
||||||
|
|
||||||
|
printa(@);
|
||||||
|
setopt("aggpack");
|
||||||
|
printa(@);
|
||||||
|
setopt("aggzoom");
|
||||||
|
printa(@);
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -0,0 +1,149 @@
|
|||||||
|
|
||||||
|
1
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
< 0 | 0
|
||||||
|
0 | 1
|
||||||
|
1 |@ 1000
|
||||||
|
2 |@ 1000
|
||||||
|
3 |@ 1000
|
||||||
|
4 |@ 1000
|
||||||
|
5 |@ 1000
|
||||||
|
6 |@ 1000
|
||||||
|
7 |@ 1000
|
||||||
|
8 |@ 1000
|
||||||
|
9 |@ 1000
|
||||||
|
10 |@ 1000
|
||||||
|
11 |@ 1000
|
||||||
|
12 |@ 1000
|
||||||
|
13 |@ 1000
|
||||||
|
14 |@ 1000
|
||||||
|
15 |@ 1000
|
||||||
|
16 |@ 1000
|
||||||
|
17 |@ 1000
|
||||||
|
18 |@ 1000
|
||||||
|
19 |@ 1000
|
||||||
|
20 |@ 1000
|
||||||
|
21 |@ 1000
|
||||||
|
22 |@ 1000
|
||||||
|
23 |@ 1000
|
||||||
|
24 |@ 1000
|
||||||
|
25 |@ 1000
|
||||||
|
26 |@ 1000
|
||||||
|
27 |@ 1000
|
||||||
|
28 |@ 1000
|
||||||
|
29 |@ 1000
|
||||||
|
30 |@ 1000
|
||||||
|
31 | 0
|
||||||
|
32 | 0
|
||||||
|
33 | 0
|
||||||
|
34 | 0
|
||||||
|
35 | 0
|
||||||
|
36 | 0
|
||||||
|
37 | 0
|
||||||
|
38 | 0
|
||||||
|
39 | 0
|
||||||
|
>= 40 |@@ 2000
|
||||||
|
|
||||||
|
2
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
< 0 | 0
|
||||||
|
0 | 1
|
||||||
|
1 |@ 1000
|
||||||
|
2 |@ 1000
|
||||||
|
3 |@ 1000
|
||||||
|
4 |@ 1000
|
||||||
|
5 |@ 1000
|
||||||
|
6 |@ 1000
|
||||||
|
7 |@ 1000
|
||||||
|
8 |@ 1000
|
||||||
|
9 |@ 1000
|
||||||
|
10 |@ 1000
|
||||||
|
11 |@ 1000
|
||||||
|
12 |@ 1000
|
||||||
|
13 |@ 1000
|
||||||
|
14 |@ 1000
|
||||||
|
15 |@ 1000
|
||||||
|
16 |@ 1000
|
||||||
|
17 |@ 1000
|
||||||
|
18 |@ 1000
|
||||||
|
19 |@ 1000
|
||||||
|
20 |@ 1000
|
||||||
|
21 |@ 1000
|
||||||
|
22 |@ 1000
|
||||||
|
23 |@ 1000
|
||||||
|
24 |@ 1000
|
||||||
|
25 |@ 1000
|
||||||
|
26 |@ 1000
|
||||||
|
27 |@ 1000
|
||||||
|
28 |@ 1000
|
||||||
|
29 |@ 1000
|
||||||
|
30 |@ 1000
|
||||||
|
31 | 0
|
||||||
|
32 | 0
|
||||||
|
33 | 0
|
||||||
|
34 | 0
|
||||||
|
35 | 0
|
||||||
|
36 | 0
|
||||||
|
37 | 0
|
||||||
|
38 | 0
|
||||||
|
39 | 0
|
||||||
|
>= 40 |@@ 2000
|
||||||
|
|
||||||
|
3
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
< 0 | 0
|
||||||
|
0 | 1
|
||||||
|
1 |@ 1000
|
||||||
|
2 |@ 1000
|
||||||
|
3 |@ 1000
|
||||||
|
4 |@ 1000
|
||||||
|
5 |@ 1000
|
||||||
|
6 |@ 1000
|
||||||
|
7 |@ 1000
|
||||||
|
8 |@ 1000
|
||||||
|
9 |@ 1000
|
||||||
|
10 |@ 1000
|
||||||
|
11 |@ 1000
|
||||||
|
12 |@ 1000
|
||||||
|
13 |@ 1000
|
||||||
|
14 |@ 1000
|
||||||
|
15 |@ 1000
|
||||||
|
16 |@ 1000
|
||||||
|
17 |@ 1000
|
||||||
|
18 |@ 1000
|
||||||
|
19 |@ 1000
|
||||||
|
20 |@ 1000
|
||||||
|
21 |@ 1000
|
||||||
|
22 |@ 1000
|
||||||
|
23 |@ 1000
|
||||||
|
24 |@ 1000
|
||||||
|
25 |@ 1000
|
||||||
|
26 |@ 1000
|
||||||
|
27 |@ 1000
|
||||||
|
28 |@ 1000
|
||||||
|
29 |@ 1000
|
||||||
|
30 |@ 1000
|
||||||
|
31 | 0
|
||||||
|
32 | 0
|
||||||
|
33 | 0
|
||||||
|
34 | 0
|
||||||
|
35 | 0
|
||||||
|
36 | 0
|
||||||
|
37 | 0
|
||||||
|
38 | 0
|
||||||
|
39 | 0
|
||||||
|
>= 40 |@@ 2000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
1 < 0 : ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁: >= 40 | 32001
|
||||||
|
2 < 0 : ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁: >= 40 | 32001
|
||||||
|
3 < 0 : ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁: >= 40 | 32001
|
||||||
|
|
||||||
|
|
||||||
|
key min .------------------------------------------. max | count
|
||||||
|
1 < 0 : ▁▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █: >= 40 | 32001
|
||||||
|
2 < 0 : ▁▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █: >= 40 | 32001
|
||||||
|
3 < 0 : ▁▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █: >= 40 | 32001
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* This file and its contents are supplied under the terms of the
|
||||||
|
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||||
|
* You may only use this file in accordance with the terms of version
|
||||||
|
* 1.0 of the CDDL.
|
||||||
|
*
|
||||||
|
* A full copy of the text of the CDDL should have accompanied this
|
||||||
|
* source. A copy of the CDDL is also available via the Internet at
|
||||||
|
* http://www.illumos.org/license/CDDL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Joyent, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma D option quiet
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i++ < 90/
|
||||||
|
{
|
||||||
|
@ = lquantize(i, 0, 100, 1, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
tick-1ms
|
||||||
|
/i == 100/
|
||||||
|
{
|
||||||
|
@ = lquantize(i++, 0, 100, 1, 2000);
|
||||||
|
@ = lquantize(i++, 0, 100, 1, 3000);
|
||||||
|
|
||||||
|
printa(@);
|
||||||
|
setopt("aggzoom");
|
||||||
|
printa(@);
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -0,0 +1,211 @@
|
|||||||
|
|
||||||
|
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
0 | 0
|
||||||
|
1 | 1000
|
||||||
|
2 | 1000
|
||||||
|
3 | 1000
|
||||||
|
4 | 1000
|
||||||
|
5 | 1000
|
||||||
|
6 | 1000
|
||||||
|
7 | 1000
|
||||||
|
8 | 1000
|
||||||
|
9 | 1000
|
||||||
|
10 | 1000
|
||||||
|
11 | 1000
|
||||||
|
12 | 1000
|
||||||
|
13 | 1000
|
||||||
|
14 | 1000
|
||||||
|
15 | 1000
|
||||||
|
16 | 1000
|
||||||
|
17 | 1000
|
||||||
|
18 | 1000
|
||||||
|
19 | 1000
|
||||||
|
20 | 1000
|
||||||
|
21 | 1000
|
||||||
|
22 | 1000
|
||||||
|
23 | 1000
|
||||||
|
24 | 1000
|
||||||
|
25 | 1000
|
||||||
|
26 | 1000
|
||||||
|
27 | 1000
|
||||||
|
28 | 1000
|
||||||
|
29 | 1000
|
||||||
|
30 | 1000
|
||||||
|
31 | 1000
|
||||||
|
32 | 1000
|
||||||
|
33 | 1000
|
||||||
|
34 | 1000
|
||||||
|
35 | 1000
|
||||||
|
36 | 1000
|
||||||
|
37 | 1000
|
||||||
|
38 | 1000
|
||||||
|
39 | 1000
|
||||||
|
40 | 1000
|
||||||
|
41 | 1000
|
||||||
|
42 | 1000
|
||||||
|
43 | 1000
|
||||||
|
44 | 1000
|
||||||
|
45 | 1000
|
||||||
|
46 | 1000
|
||||||
|
47 | 1000
|
||||||
|
48 | 1000
|
||||||
|
49 | 1000
|
||||||
|
50 | 1000
|
||||||
|
51 | 1000
|
||||||
|
52 | 1000
|
||||||
|
53 | 1000
|
||||||
|
54 | 1000
|
||||||
|
55 | 1000
|
||||||
|
56 | 1000
|
||||||
|
57 | 1000
|
||||||
|
58 | 1000
|
||||||
|
59 | 1000
|
||||||
|
60 | 1000
|
||||||
|
61 | 1000
|
||||||
|
62 | 1000
|
||||||
|
63 | 1000
|
||||||
|
64 | 1000
|
||||||
|
65 | 1000
|
||||||
|
66 | 1000
|
||||||
|
67 | 1000
|
||||||
|
68 | 1000
|
||||||
|
69 | 1000
|
||||||
|
70 | 1000
|
||||||
|
71 | 1000
|
||||||
|
72 | 1000
|
||||||
|
73 | 1000
|
||||||
|
74 | 1000
|
||||||
|
75 | 1000
|
||||||
|
76 | 1000
|
||||||
|
77 | 1000
|
||||||
|
78 | 1000
|
||||||
|
79 | 1000
|
||||||
|
80 | 1000
|
||||||
|
81 | 1000
|
||||||
|
82 | 1000
|
||||||
|
83 | 1000
|
||||||
|
84 | 1000
|
||||||
|
85 | 1000
|
||||||
|
86 | 1000
|
||||||
|
87 | 1000
|
||||||
|
88 | 1000
|
||||||
|
89 | 1000
|
||||||
|
90 | 1000
|
||||||
|
91 | 0
|
||||||
|
92 | 0
|
||||||
|
93 | 0
|
||||||
|
94 | 0
|
||||||
|
95 | 0
|
||||||
|
96 | 0
|
||||||
|
97 | 0
|
||||||
|
98 | 0
|
||||||
|
99 | 0
|
||||||
|
>= 100 |@@ 5000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
value ------------- Distribution ------------- count
|
||||||
|
0 | 0
|
||||||
|
1 |@@@@@@@@ 1000
|
||||||
|
2 |@@@@@@@@ 1000
|
||||||
|
3 |@@@@@@@@ 1000
|
||||||
|
4 |@@@@@@@@ 1000
|
||||||
|
5 |@@@@@@@@ 1000
|
||||||
|
6 |@@@@@@@@ 1000
|
||||||
|
7 |@@@@@@@@ 1000
|
||||||
|
8 |@@@@@@@@ 1000
|
||||||
|
9 |@@@@@@@@ 1000
|
||||||
|
10 |@@@@@@@@ 1000
|
||||||
|
11 |@@@@@@@@ 1000
|
||||||
|
12 |@@@@@@@@ 1000
|
||||||
|
13 |@@@@@@@@ 1000
|
||||||
|
14 |@@@@@@@@ 1000
|
||||||
|
15 |@@@@@@@@ 1000
|
||||||
|
16 |@@@@@@@@ 1000
|
||||||
|
17 |@@@@@@@@ 1000
|
||||||
|
18 |@@@@@@@@ 1000
|
||||||
|
19 |@@@@@@@@ 1000
|
||||||
|
20 |@@@@@@@@ 1000
|
||||||
|
21 |@@@@@@@@ 1000
|
||||||
|
22 |@@@@@@@@ 1000
|
||||||
|
23 |@@@@@@@@ 1000
|
||||||
|
24 |@@@@@@@@ 1000
|
||||||
|
25 |@@@@@@@@ 1000
|
||||||
|
26 |@@@@@@@@ 1000
|
||||||
|
27 |@@@@@@@@ 1000
|
||||||
|
28 |@@@@@@@@ 1000
|
||||||
|
29 |@@@@@@@@ 1000
|
||||||
|
30 |@@@@@@@@ 1000
|
||||||
|
31 |@@@@@@@@ 1000
|
||||||
|
32 |@@@@@@@@ 1000
|
||||||
|
33 |@@@@@@@@ 1000
|
||||||
|
34 |@@@@@@@@ 1000
|
||||||
|
35 |@@@@@@@@ 1000
|
||||||
|
36 |@@@@@@@@ 1000
|
||||||
|
37 |@@@@@@@@ 1000
|
||||||
|
38 |@@@@@@@@ 1000
|
||||||
|
39 |@@@@@@@@ 1000
|
||||||
|
40 |@@@@@@@@ 1000
|
||||||
|
41 |@@@@@@@@ 1000
|
||||||
|
42 |@@@@@@@@ 1000
|
||||||
|
43 |@@@@@@@@ 1000
|
||||||
|
44 |@@@@@@@@ 1000
|
||||||
|
45 |@@@@@@@@ 1000
|
||||||
|
46 |@@@@@@@@ 1000
|
||||||
|
47 |@@@@@@@@ 1000
|
||||||
|
48 |@@@@@@@@ 1000
|
||||||
|
49 |@@@@@@@@ 1000
|
||||||
|
50 |@@@@@@@@ 1000
|
||||||
|
51 |@@@@@@@@ 1000
|
||||||
|
52 |@@@@@@@@ 1000
|
||||||
|
53 |@@@@@@@@ 1000
|
||||||
|
54 |@@@@@@@@ 1000
|
||||||
|
55 |@@@@@@@@ 1000
|
||||||
|
56 |@@@@@@@@ 1000
|
||||||
|
57 |@@@@@@@@ 1000
|
||||||
|
58 |@@@@@@@@ 1000
|
||||||
|
59 |@@@@@@@@ 1000
|
||||||
|
60 |@@@@@@@@ 1000
|
||||||
|
61 |@@@@@@@@ 1000
|
||||||
|
62 |@@@@@@@@ 1000
|
||||||
|
63 |@@@@@@@@ 1000
|
||||||
|
64 |@@@@@@@@ 1000
|
||||||
|
65 |@@@@@@@@ 1000
|
||||||
|
66 |@@@@@@@@ 1000
|
||||||
|
67 |@@@@@@@@ 1000
|
||||||
|
68 |@@@@@@@@ 1000
|
||||||
|
69 |@@@@@@@@ 1000
|
||||||
|
70 |@@@@@@@@ 1000
|
||||||
|
71 |@@@@@@@@ 1000
|
||||||
|
72 |@@@@@@@@ 1000
|
||||||
|
73 |@@@@@@@@ 1000
|
||||||
|
74 |@@@@@@@@ 1000
|
||||||
|
75 |@@@@@@@@ 1000
|
||||||
|
76 |@@@@@@@@ 1000
|
||||||
|
77 |@@@@@@@@ 1000
|
||||||
|
78 |@@@@@@@@ 1000
|
||||||
|
79 |@@@@@@@@ 1000
|
||||||
|
80 |@@@@@@@@ 1000
|
||||||
|
81 |@@@@@@@@ 1000
|
||||||
|
82 |@@@@@@@@ 1000
|
||||||
|
83 |@@@@@@@@ 1000
|
||||||
|
84 |@@@@@@@@ 1000
|
||||||
|
85 |@@@@@@@@ 1000
|
||||||
|
86 |@@@@@@@@ 1000
|
||||||
|
87 |@@@@@@@@ 1000
|
||||||
|
88 |@@@@@@@@ 1000
|
||||||
|
89 |@@@@@@@@ 1000
|
||||||
|
90 |@@@@@@@@ 1000
|
||||||
|
91 | 0
|
||||||
|
92 | 0
|
||||||
|
93 | 0
|
||||||
|
94 | 0
|
||||||
|
95 | 0
|
||||||
|
96 | 0
|
||||||
|
97 | 0
|
||||||
|
98 | 0
|
||||||
|
99 | 0
|
||||||
|
>= 100 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5000
|
||||||
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, Joyent, Inc. All rights reserved.
|
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1300,6 +1300,231 @@ dtrace_aggregate_walk(dtrace_hdl_t *dtp, dtrace_aggregate_f *func, void *arg)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_aggregate_total(dtrace_hdl_t *dtp, boolean_t clear)
|
||||||
|
{
|
||||||
|
dt_ahashent_t *h;
|
||||||
|
dtrace_aggdata_t **total;
|
||||||
|
dtrace_aggid_t max = DTRACE_AGGVARIDNONE, id;
|
||||||
|
dt_aggregate_t *agp = &dtp->dt_aggregate;
|
||||||
|
dt_ahash_t *hash = &agp->dtat_hash;
|
||||||
|
uint32_t tflags;
|
||||||
|
|
||||||
|
tflags = DTRACE_A_TOTAL | DTRACE_A_HASNEGATIVES | DTRACE_A_HASPOSITIVES;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we need to deliver per-aggregation totals, we're going to take
|
||||||
|
* three passes over the aggregate: one to clear everything out and
|
||||||
|
* determine our maximum aggregation ID, one to actually total
|
||||||
|
* everything up, and a final pass to assign the totals to the
|
||||||
|
* individual elements.
|
||||||
|
*/
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data;
|
||||||
|
|
||||||
|
if ((id = dt_aggregate_aggvarid(h)) > max)
|
||||||
|
max = id;
|
||||||
|
|
||||||
|
aggdata->dtada_total = 0;
|
||||||
|
aggdata->dtada_flags &= ~tflags;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clear || max == DTRACE_AGGVARIDNONE)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
total = dt_zalloc(dtp, (max + 1) * sizeof (dtrace_aggdata_t *));
|
||||||
|
|
||||||
|
if (total == NULL)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data;
|
||||||
|
dtrace_aggdesc_t *agg = aggdata->dtada_desc;
|
||||||
|
dtrace_recdesc_t *rec;
|
||||||
|
caddr_t data;
|
||||||
|
int64_t val, *addr;
|
||||||
|
|
||||||
|
rec = &agg->dtagd_rec[agg->dtagd_nrecs - 1];
|
||||||
|
data = aggdata->dtada_data;
|
||||||
|
addr = (int64_t *)(uintptr_t)(data + rec->dtrd_offset);
|
||||||
|
|
||||||
|
switch (rec->dtrd_action) {
|
||||||
|
case DTRACEAGG_STDDEV:
|
||||||
|
val = dt_stddev((uint64_t *)addr, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DTRACEAGG_SUM:
|
||||||
|
case DTRACEAGG_COUNT:
|
||||||
|
val = *addr;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DTRACEAGG_AVG:
|
||||||
|
val = addr[0] ? (addr[1] / addr[0]) : 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (total[agg->dtagd_varid] == NULL) {
|
||||||
|
total[agg->dtagd_varid] = aggdata;
|
||||||
|
aggdata->dtada_flags |= DTRACE_A_TOTAL;
|
||||||
|
} else {
|
||||||
|
aggdata = total[agg->dtagd_varid];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val > 0)
|
||||||
|
aggdata->dtada_flags |= DTRACE_A_HASPOSITIVES;
|
||||||
|
|
||||||
|
if (val < 0) {
|
||||||
|
aggdata->dtada_flags |= DTRACE_A_HASNEGATIVES;
|
||||||
|
val = -val;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dtp->dt_options[DTRACEOPT_AGGZOOM] != DTRACEOPT_UNSET) {
|
||||||
|
val = (int64_t)((long double)val *
|
||||||
|
(1 / DTRACE_AGGZOOM_MAX));
|
||||||
|
|
||||||
|
if (val > aggdata->dtada_total)
|
||||||
|
aggdata->dtada_total = val;
|
||||||
|
} else {
|
||||||
|
aggdata->dtada_total += val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* And now one final pass to set everyone's total.
|
||||||
|
*/
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data, *t;
|
||||||
|
dtrace_aggdesc_t *agg = aggdata->dtada_desc;
|
||||||
|
|
||||||
|
if ((t = total[agg->dtagd_varid]) == NULL || aggdata == t)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
aggdata->dtada_total = t->dtada_total;
|
||||||
|
aggdata->dtada_flags |= (t->dtada_flags & tflags);
|
||||||
|
}
|
||||||
|
|
||||||
|
dt_free(dtp, total);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_aggregate_minmaxbin(dtrace_hdl_t *dtp, boolean_t clear)
|
||||||
|
{
|
||||||
|
dt_ahashent_t *h;
|
||||||
|
dtrace_aggdata_t **minmax;
|
||||||
|
dtrace_aggid_t max = DTRACE_AGGVARIDNONE, id;
|
||||||
|
dt_aggregate_t *agp = &dtp->dt_aggregate;
|
||||||
|
dt_ahash_t *hash = &agp->dtat_hash;
|
||||||
|
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data;
|
||||||
|
|
||||||
|
if ((id = dt_aggregate_aggvarid(h)) > max)
|
||||||
|
max = id;
|
||||||
|
|
||||||
|
aggdata->dtada_minbin = 0;
|
||||||
|
aggdata->dtada_maxbin = 0;
|
||||||
|
aggdata->dtada_flags &= ~DTRACE_A_MINMAXBIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clear || max == DTRACE_AGGVARIDNONE)
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
minmax = dt_zalloc(dtp, (max + 1) * sizeof (dtrace_aggdata_t *));
|
||||||
|
|
||||||
|
if (minmax == NULL)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data;
|
||||||
|
dtrace_aggdesc_t *agg = aggdata->dtada_desc;
|
||||||
|
dtrace_recdesc_t *rec;
|
||||||
|
caddr_t data;
|
||||||
|
int64_t *addr;
|
||||||
|
int minbin = -1, maxbin = -1, i;
|
||||||
|
int start = 0, size;
|
||||||
|
|
||||||
|
rec = &agg->dtagd_rec[agg->dtagd_nrecs - 1];
|
||||||
|
size = rec->dtrd_size / sizeof (int64_t);
|
||||||
|
data = aggdata->dtada_data;
|
||||||
|
addr = (int64_t *)(uintptr_t)(data + rec->dtrd_offset);
|
||||||
|
|
||||||
|
switch (rec->dtrd_action) {
|
||||||
|
case DTRACEAGG_LQUANTIZE:
|
||||||
|
/*
|
||||||
|
* For lquantize(), we always display the entire range
|
||||||
|
* of the aggregation when aggpack is set.
|
||||||
|
*/
|
||||||
|
start = 1;
|
||||||
|
minbin = start;
|
||||||
|
maxbin = size - 1 - start;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DTRACEAGG_QUANTIZE:
|
||||||
|
for (i = start; i < size; i++) {
|
||||||
|
if (!addr[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (minbin == -1)
|
||||||
|
minbin = i - start;
|
||||||
|
|
||||||
|
maxbin = i - start;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minbin == -1) {
|
||||||
|
/*
|
||||||
|
* If we have no data (e.g., due to a clear()
|
||||||
|
* or negative increments), we'll use the
|
||||||
|
* zero bucket as both our min and max.
|
||||||
|
*/
|
||||||
|
minbin = maxbin = DTRACE_QUANTIZE_ZEROBUCKET;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minmax[agg->dtagd_varid] == NULL) {
|
||||||
|
minmax[agg->dtagd_varid] = aggdata;
|
||||||
|
aggdata->dtada_flags |= DTRACE_A_MINMAXBIN;
|
||||||
|
aggdata->dtada_minbin = minbin;
|
||||||
|
aggdata->dtada_maxbin = maxbin;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minbin < minmax[agg->dtagd_varid]->dtada_minbin)
|
||||||
|
minmax[agg->dtagd_varid]->dtada_minbin = minbin;
|
||||||
|
|
||||||
|
if (maxbin > minmax[agg->dtagd_varid]->dtada_maxbin)
|
||||||
|
minmax[agg->dtagd_varid]->dtada_maxbin = maxbin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* And now one final pass to set everyone's minbin and maxbin.
|
||||||
|
*/
|
||||||
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall) {
|
||||||
|
dtrace_aggdata_t *aggdata = &h->dtahe_data, *mm;
|
||||||
|
dtrace_aggdesc_t *agg = aggdata->dtada_desc;
|
||||||
|
|
||||||
|
if ((mm = minmax[agg->dtagd_varid]) == NULL || aggdata == mm)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
aggdata->dtada_minbin = mm->dtada_minbin;
|
||||||
|
aggdata->dtada_maxbin = mm->dtada_maxbin;
|
||||||
|
aggdata->dtada_flags |= DTRACE_A_MINMAXBIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt_free(dtp, minmax);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
dt_aggregate_walk_sorted(dtrace_hdl_t *dtp,
|
dt_aggregate_walk_sorted(dtrace_hdl_t *dtp,
|
||||||
dtrace_aggregate_f *func, void *arg,
|
dtrace_aggregate_f *func, void *arg,
|
||||||
@ -1309,6 +1534,23 @@ dt_aggregate_walk_sorted(dtrace_hdl_t *dtp,
|
|||||||
dt_ahashent_t *h, **sorted;
|
dt_ahashent_t *h, **sorted;
|
||||||
dt_ahash_t *hash = &agp->dtat_hash;
|
dt_ahash_t *hash = &agp->dtat_hash;
|
||||||
size_t i, nentries = 0;
|
size_t i, nentries = 0;
|
||||||
|
int rval = -1;
|
||||||
|
|
||||||
|
agp->dtat_flags &= ~(DTRACE_A_TOTAL | DTRACE_A_MINMAXBIN);
|
||||||
|
|
||||||
|
if (dtp->dt_options[DTRACEOPT_AGGHIST] != DTRACEOPT_UNSET) {
|
||||||
|
agp->dtat_flags |= DTRACE_A_TOTAL;
|
||||||
|
|
||||||
|
if (dt_aggregate_total(dtp, B_FALSE) != 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dtp->dt_options[DTRACEOPT_AGGPACK] != DTRACEOPT_UNSET) {
|
||||||
|
agp->dtat_flags |= DTRACE_A_MINMAXBIN;
|
||||||
|
|
||||||
|
if (dt_aggregate_minmaxbin(dtp, B_FALSE) != 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall)
|
for (h = hash->dtah_all; h != NULL; h = h->dtahe_nextall)
|
||||||
nentries++;
|
nentries++;
|
||||||
@ -1316,7 +1558,7 @@ dt_aggregate_walk_sorted(dtrace_hdl_t *dtp,
|
|||||||
sorted = dt_alloc(dtp, nentries * sizeof (dt_ahashent_t *));
|
sorted = dt_alloc(dtp, nentries * sizeof (dt_ahashent_t *));
|
||||||
|
|
||||||
if (sorted == NULL)
|
if (sorted == NULL)
|
||||||
return (-1);
|
goto out;
|
||||||
|
|
||||||
for (h = hash->dtah_all, i = 0; h != NULL; h = h->dtahe_nextall)
|
for (h = hash->dtah_all, i = 0; h != NULL; h = h->dtahe_nextall)
|
||||||
sorted[i++] = h;
|
sorted[i++] = h;
|
||||||
@ -1340,14 +1582,20 @@ dt_aggregate_walk_sorted(dtrace_hdl_t *dtp,
|
|||||||
for (i = 0; i < nentries; i++) {
|
for (i = 0; i < nentries; i++) {
|
||||||
h = sorted[i];
|
h = sorted[i];
|
||||||
|
|
||||||
if (dt_aggwalk_rval(dtp, h, func(&h->dtahe_data, arg)) == -1) {
|
if (dt_aggwalk_rval(dtp, h, func(&h->dtahe_data, arg)) == -1)
|
||||||
dt_free(dtp, sorted);
|
goto out;
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rval = 0;
|
||||||
|
out:
|
||||||
|
if (agp->dtat_flags & DTRACE_A_TOTAL)
|
||||||
|
(void) dt_aggregate_total(dtp, B_TRUE);
|
||||||
|
|
||||||
|
if (agp->dtat_flags & DTRACE_A_MINMAXBIN)
|
||||||
|
(void) dt_aggregate_minmaxbin(dtp, B_TRUE);
|
||||||
|
|
||||||
dt_free(dtp, sorted);
|
dt_free(dtp, sorted);
|
||||||
return (0);
|
return (rval);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -1870,6 +2118,8 @@ dtrace_aggregate_print(dtrace_hdl_t *dtp, FILE *fp,
|
|||||||
{
|
{
|
||||||
dt_print_aggdata_t pd;
|
dt_print_aggdata_t pd;
|
||||||
|
|
||||||
|
bzero(&pd, sizeof (pd));
|
||||||
|
|
||||||
pd.dtpa_dtp = dtp;
|
pd.dtpa_dtp = dtp;
|
||||||
pd.dtpa_fp = fp;
|
pd.dtpa_fp = fp;
|
||||||
pd.dtpa_allunprint = 1;
|
pd.dtpa_allunprint = 1;
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, Joyent, Inc. All rights reserved.
|
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -59,6 +59,25 @@ dt_fabsl(long double x)
|
|||||||
return (x);
|
return (x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_ndigits(long long val)
|
||||||
|
{
|
||||||
|
int rval = 1;
|
||||||
|
long long cmp = 10;
|
||||||
|
|
||||||
|
if (val < 0) {
|
||||||
|
val = val == INT64_MIN ? INT64_MAX : -val;
|
||||||
|
rval++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (val > cmp && cmp > 0) {
|
||||||
|
rval++;
|
||||||
|
cmp *= 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (rval < 4 ? 4 : rval);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 128-bit arithmetic functions needed to support the stddev() aggregating
|
* 128-bit arithmetic functions needed to support the stddev() aggregating
|
||||||
* action.
|
* action.
|
||||||
@ -487,7 +506,125 @@ dt_nullrec()
|
|||||||
return (DTRACE_CONSUME_NEXT);
|
return (DTRACE_CONSUME_NEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static void
|
||||||
|
dt_quantize_total(dtrace_hdl_t *dtp, int64_t datum, long double *total)
|
||||||
|
{
|
||||||
|
long double val = dt_fabsl((long double)datum);
|
||||||
|
|
||||||
|
if (dtp->dt_options[DTRACEOPT_AGGZOOM] == DTRACEOPT_UNSET) {
|
||||||
|
*total += val;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we're zooming in on an aggregation, we want the height of the
|
||||||
|
* highest value to be approximately 95% of total bar height -- so we
|
||||||
|
* adjust up by the reciprocal of DTRACE_AGGZOOM_MAX when comparing to
|
||||||
|
* our highest value.
|
||||||
|
*/
|
||||||
|
val *= 1 / DTRACE_AGGZOOM_MAX;
|
||||||
|
|
||||||
|
if (*total < val)
|
||||||
|
*total = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_print_quanthdr(dtrace_hdl_t *dtp, FILE *fp, int width)
|
||||||
|
{
|
||||||
|
return (dt_printf(dtp, fp, "\n%*s %41s %-9s\n",
|
||||||
|
width ? width : 16, width ? "key" : "value",
|
||||||
|
"------------- Distribution -------------", "count"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_print_quanthdr_packed(dtrace_hdl_t *dtp, FILE *fp, int width,
|
||||||
|
const dtrace_aggdata_t *aggdata, dtrace_actkind_t action)
|
||||||
|
{
|
||||||
|
int min = aggdata->dtada_minbin, max = aggdata->dtada_maxbin;
|
||||||
|
int minwidth, maxwidth, i;
|
||||||
|
|
||||||
|
assert(action == DTRACEAGG_QUANTIZE || action == DTRACEAGG_LQUANTIZE);
|
||||||
|
|
||||||
|
if (action == DTRACEAGG_QUANTIZE) {
|
||||||
|
if (min != 0 && min != DTRACE_QUANTIZE_ZEROBUCKET)
|
||||||
|
min--;
|
||||||
|
|
||||||
|
if (max < DTRACE_QUANTIZE_NBUCKETS - 1)
|
||||||
|
max++;
|
||||||
|
|
||||||
|
minwidth = dt_ndigits(DTRACE_QUANTIZE_BUCKETVAL(min));
|
||||||
|
maxwidth = dt_ndigits(DTRACE_QUANTIZE_BUCKETVAL(max));
|
||||||
|
} else {
|
||||||
|
maxwidth = 8;
|
||||||
|
minwidth = maxwidth - 1;
|
||||||
|
max++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, "\n%*s %*s .",
|
||||||
|
width, width > 0 ? "key" : "", minwidth, "min") < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (i = min; i <= max; i++) {
|
||||||
|
if (dt_printf(dtp, fp, "-") < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (dt_printf(dtp, fp, ". %*s | count\n", -maxwidth, "max"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We use a subset of the Unicode Block Elements (U+2588 through U+258F,
|
||||||
|
* inclusive) to represent aggregations via UTF-8 -- which are expressed via
|
||||||
|
* 3-byte UTF-8 sequences.
|
||||||
|
*/
|
||||||
|
#define DTRACE_AGGUTF8_FULL 0x2588
|
||||||
|
#define DTRACE_AGGUTF8_BASE 0x258f
|
||||||
|
#define DTRACE_AGGUTF8_LEVELS 8
|
||||||
|
|
||||||
|
#define DTRACE_AGGUTF8_BYTE0(val) (0xe0 | ((val) >> 12))
|
||||||
|
#define DTRACE_AGGUTF8_BYTE1(val) (0x80 | (((val) >> 6) & 0x3f))
|
||||||
|
#define DTRACE_AGGUTF8_BYTE2(val) (0x80 | ((val) & 0x3f))
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_print_quantline_utf8(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
|
||||||
|
uint64_t normal, long double total)
|
||||||
|
{
|
||||||
|
uint_t len = 40, i, whole, partial;
|
||||||
|
long double f = (dt_fabsl((long double)val) * len) / total;
|
||||||
|
const char *spaces = " ";
|
||||||
|
|
||||||
|
whole = (uint_t)f;
|
||||||
|
partial = (uint_t)((f - (long double)(uint_t)f) *
|
||||||
|
(long double)DTRACE_AGGUTF8_LEVELS);
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, "|") < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (i = 0; i < whole; i++) {
|
||||||
|
if (dt_printf(dtp, fp, "%c%c%c",
|
||||||
|
DTRACE_AGGUTF8_BYTE0(DTRACE_AGGUTF8_FULL),
|
||||||
|
DTRACE_AGGUTF8_BYTE1(DTRACE_AGGUTF8_FULL),
|
||||||
|
DTRACE_AGGUTF8_BYTE2(DTRACE_AGGUTF8_FULL)) < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (partial != 0) {
|
||||||
|
partial = DTRACE_AGGUTF8_BASE - (partial - 1);
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, "%c%c%c",
|
||||||
|
DTRACE_AGGUTF8_BYTE0(partial),
|
||||||
|
DTRACE_AGGUTF8_BYTE1(partial),
|
||||||
|
DTRACE_AGGUTF8_BYTE2(partial)) < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (dt_printf(dtp, fp, "%s %-9lld\n", spaces + i,
|
||||||
|
(long long)val / normal));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
|
dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
|
||||||
uint64_t normal, long double total, char positives, char negatives)
|
uint64_t normal, long double total, char positives, char negatives)
|
||||||
{
|
{
|
||||||
@ -505,6 +642,11 @@ dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
|
|||||||
|
|
||||||
if (!negatives) {
|
if (!negatives) {
|
||||||
if (positives) {
|
if (positives) {
|
||||||
|
if (dtp->dt_encoding == DT_ENCODING_UTF8) {
|
||||||
|
return (dt_print_quantline_utf8(dtp, fp, val,
|
||||||
|
normal, total));
|
||||||
|
}
|
||||||
|
|
||||||
f = (dt_fabsl((long double)val) * len) / total;
|
f = (dt_fabsl((long double)val) * len) / total;
|
||||||
depth = (uint_t)(f + 0.5);
|
depth = (uint_t)(f + 0.5);
|
||||||
} else {
|
} else {
|
||||||
@ -547,6 +689,77 @@ dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* As with UTF-8 printing of aggregations, we use a subset of the Unicode
|
||||||
|
* Block Elements (U+2581 through U+2588, inclusive) to represent our packed
|
||||||
|
* aggregation.
|
||||||
|
*/
|
||||||
|
#define DTRACE_AGGPACK_BASE 0x2581
|
||||||
|
#define DTRACE_AGGPACK_LEVELS 8
|
||||||
|
|
||||||
|
static int
|
||||||
|
dt_print_packed(dtrace_hdl_t *dtp, FILE *fp,
|
||||||
|
long double datum, long double total)
|
||||||
|
{
|
||||||
|
static boolean_t utf8_checked = 0;
|
||||||
|
static boolean_t utf8;
|
||||||
|
char *ascii = "__xxxxXX";
|
||||||
|
char *neg = "vvvvVV";
|
||||||
|
unsigned int len;
|
||||||
|
long double val;
|
||||||
|
|
||||||
|
while (!utf8_checked) {
|
||||||
|
char *term;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We want to determine if we can reasonably emit UTF-8 for our
|
||||||
|
* packed aggregation. To do this, we will check for terminals
|
||||||
|
* that are known to be primitive to emit UTF-8 on these.
|
||||||
|
*/
|
||||||
|
utf8_checked = B_TRUE;
|
||||||
|
|
||||||
|
if (dtp->dt_encoding == DT_ENCODING_ASCII)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (dtp->dt_encoding == DT_ENCODING_UTF8) {
|
||||||
|
utf8 = B_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((term = getenv("TERM")) != NULL &&
|
||||||
|
(strcmp(term, "sun") == 0 ||
|
||||||
|
strcmp(term, "sun-color") == 0) ||
|
||||||
|
strcmp(term, "dumb") == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
utf8 = B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (datum == 0)
|
||||||
|
return (dt_printf(dtp, fp, " "));
|
||||||
|
|
||||||
|
if (datum < 0) {
|
||||||
|
len = strlen(neg);
|
||||||
|
val = dt_fabsl(datum * (len - 1)) / total;
|
||||||
|
return (dt_printf(dtp, fp, "%c", neg[(uint_t)(val + 0.5)]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (utf8) {
|
||||||
|
int block = DTRACE_AGGPACK_BASE + (unsigned int)(((datum *
|
||||||
|
(DTRACE_AGGPACK_LEVELS - 1)) / total) + 0.5);
|
||||||
|
|
||||||
|
return (dt_printf(dtp, fp, "%c%c%c",
|
||||||
|
DTRACE_AGGUTF8_BYTE0(block),
|
||||||
|
DTRACE_AGGUTF8_BYTE1(block),
|
||||||
|
DTRACE_AGGUTF8_BYTE2(block)));
|
||||||
|
}
|
||||||
|
|
||||||
|
len = strlen(ascii);
|
||||||
|
val = (datum * (len - 1)) / total;
|
||||||
|
return (dt_printf(dtp, fp, "%c", ascii[(uint_t)(val + 0.5)]));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
||||||
size_t size, uint64_t normal)
|
size_t size, uint64_t normal)
|
||||||
@ -564,9 +777,9 @@ dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
|
|
||||||
if (first_bin == DTRACE_QUANTIZE_NBUCKETS - 1) {
|
if (first_bin == DTRACE_QUANTIZE_NBUCKETS - 1) {
|
||||||
/*
|
/*
|
||||||
* There isn't any data. This is possible if (and only if)
|
* There isn't any data. This is possible if the aggregation
|
||||||
* negative increment values have been used. In this case,
|
* has been clear()'d or if negative increment values have been
|
||||||
* we'll print the buckets around 0.
|
* used. Regardless, we'll print the buckets around 0.
|
||||||
*/
|
*/
|
||||||
first_bin = DTRACE_QUANTIZE_ZEROBUCKET - 1;
|
first_bin = DTRACE_QUANTIZE_ZEROBUCKET - 1;
|
||||||
last_bin = DTRACE_QUANTIZE_ZEROBUCKET + 1;
|
last_bin = DTRACE_QUANTIZE_ZEROBUCKET + 1;
|
||||||
@ -584,11 +797,10 @@ dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
for (i = first_bin; i <= last_bin; i++) {
|
for (i = first_bin; i <= last_bin; i++) {
|
||||||
positives |= (data[i] > 0);
|
positives |= (data[i] > 0);
|
||||||
negatives |= (data[i] < 0);
|
negatives |= (data[i] < 0);
|
||||||
total += dt_fabsl((long double)data[i]);
|
dt_quantize_total(dtp, data[i], &total);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
|
if (dt_print_quanthdr(dtp, fp, 0) < 0)
|
||||||
"------------- Distribution -------------", "count") < 0)
|
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
||||||
for (i = first_bin; i <= last_bin; i++) {
|
for (i = first_bin; i <= last_bin; i++) {
|
||||||
@ -604,6 +816,48 @@ dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
dt_print_quantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
||||||
|
size_t size, const dtrace_aggdata_t *aggdata)
|
||||||
|
{
|
||||||
|
const int64_t *data = addr;
|
||||||
|
long double total = 0, count = 0;
|
||||||
|
int min = aggdata->dtada_minbin, max = aggdata->dtada_maxbin, i;
|
||||||
|
int64_t minval, maxval;
|
||||||
|
|
||||||
|
if (size != DTRACE_QUANTIZE_NBUCKETS * sizeof (uint64_t))
|
||||||
|
return (dt_set_errno(dtp, EDT_DMISMATCH));
|
||||||
|
|
||||||
|
if (min != 0 && min != DTRACE_QUANTIZE_ZEROBUCKET)
|
||||||
|
min--;
|
||||||
|
|
||||||
|
if (max < DTRACE_QUANTIZE_NBUCKETS - 1)
|
||||||
|
max++;
|
||||||
|
|
||||||
|
minval = DTRACE_QUANTIZE_BUCKETVAL(min);
|
||||||
|
maxval = DTRACE_QUANTIZE_BUCKETVAL(max);
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, " %*lld :", dt_ndigits(minval),
|
||||||
|
(long long)minval) < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (i = min; i <= max; i++) {
|
||||||
|
dt_quantize_total(dtp, data[i], &total);
|
||||||
|
count += data[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = min; i <= max; i++) {
|
||||||
|
if (dt_print_packed(dtp, fp, data[i], total) < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, ": %*lld | %lld\n",
|
||||||
|
-dt_ndigits(maxval), (long long)maxval, (long long)count) < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
||||||
size_t size, uint64_t normal)
|
size_t size, uint64_t normal)
|
||||||
@ -651,7 +905,7 @@ dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
for (i = first_bin; i <= last_bin; i++) {
|
for (i = first_bin; i <= last_bin; i++) {
|
||||||
positives |= (data[i] > 0);
|
positives |= (data[i] > 0);
|
||||||
negatives |= (data[i] < 0);
|
negatives |= (data[i] < 0);
|
||||||
total += dt_fabsl((long double)data[i]);
|
dt_quantize_total(dtp, data[i], &total);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
|
if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
|
||||||
@ -663,8 +917,7 @@ dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
(void) snprintf(c, sizeof (c), "< %d",
|
(void) snprintf(c, sizeof (c), "< %d", base);
|
||||||
base / (uint32_t)normal);
|
|
||||||
err = dt_printf(dtp, fp, "%16s ", c);
|
err = dt_printf(dtp, fp, "%16s ", c);
|
||||||
} else if (i == levels + 1) {
|
} else if (i == levels + 1) {
|
||||||
(void) snprintf(c, sizeof (c), ">= %d",
|
(void) snprintf(c, sizeof (c), ">= %d",
|
||||||
@ -683,6 +936,59 @@ dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*ARGSUSED*/
|
||||||
|
int
|
||||||
|
dt_print_lquantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
||||||
|
size_t size, const dtrace_aggdata_t *aggdata)
|
||||||
|
{
|
||||||
|
const int64_t *data = addr;
|
||||||
|
long double total = 0, count = 0;
|
||||||
|
int min, max, base, err;
|
||||||
|
uint64_t arg;
|
||||||
|
uint16_t step, levels;
|
||||||
|
char c[32];
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
if (size < sizeof (uint64_t))
|
||||||
|
return (dt_set_errno(dtp, EDT_DMISMATCH));
|
||||||
|
|
||||||
|
arg = *data++;
|
||||||
|
size -= sizeof (uint64_t);
|
||||||
|
|
||||||
|
base = DTRACE_LQUANTIZE_BASE(arg);
|
||||||
|
step = DTRACE_LQUANTIZE_STEP(arg);
|
||||||
|
levels = DTRACE_LQUANTIZE_LEVELS(arg);
|
||||||
|
|
||||||
|
if (size != sizeof (uint64_t) * (levels + 2))
|
||||||
|
return (dt_set_errno(dtp, EDT_DMISMATCH));
|
||||||
|
|
||||||
|
min = 0;
|
||||||
|
max = levels + 1;
|
||||||
|
|
||||||
|
if (min == 0) {
|
||||||
|
(void) snprintf(c, sizeof (c), "< %d", base);
|
||||||
|
err = dt_printf(dtp, fp, "%8s :", c);
|
||||||
|
} else {
|
||||||
|
err = dt_printf(dtp, fp, "%8d :", base + (min - 1) * step);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
for (i = min; i <= max; i++) {
|
||||||
|
dt_quantize_total(dtp, data[i], &total);
|
||||||
|
count += data[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = min; i <= max; i++) {
|
||||||
|
if (dt_print_packed(dtp, fp, data[i], total) < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
(void) snprintf(c, sizeof (c), ">= %d", base + (levels * step));
|
||||||
|
return (dt_printf(dtp, fp, ": %-8s | %lld\n", c, (long long)count));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dt_print_llquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
dt_print_llquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
||||||
size_t size, uint64_t normal)
|
size_t size, uint64_t normal)
|
||||||
@ -740,7 +1046,7 @@ dt_print_llquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
|
|||||||
for (i = first_bin; i <= last_bin; i++) {
|
for (i = first_bin; i <= last_bin; i++) {
|
||||||
positives |= (data[i] > 0);
|
positives |= (data[i] > 0);
|
||||||
negatives |= (data[i] < 0);
|
negatives |= (data[i] < 0);
|
||||||
total += dt_fabsl((long double)data[i]);
|
dt_quantize_total(dtp, data[i], &total);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
|
if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
|
||||||
@ -823,7 +1129,7 @@ dt_print_stddev(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
static int
|
||||||
dt_print_bytes(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
|
dt_print_bytes(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
|
||||||
size_t nbytes, int width, int quiet, int forceraw)
|
size_t nbytes, int width, int quiet, int forceraw)
|
||||||
{
|
{
|
||||||
@ -876,10 +1182,12 @@ dt_print_bytes(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
|
|||||||
if (j != nbytes)
|
if (j != nbytes)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (quiet)
|
if (quiet) {
|
||||||
return (dt_printf(dtp, fp, "%s", c));
|
return (dt_printf(dtp, fp, "%s", c));
|
||||||
else
|
} else {
|
||||||
return (dt_printf(dtp, fp, " %-*s", width, c));
|
return (dt_printf(dtp, fp, " %s%*s",
|
||||||
|
width < 0 ? " " : "", width, c));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -1793,10 +2101,83 @@ dt_trunc(dtrace_hdl_t *dtp, caddr_t base, dtrace_recdesc_t *rec)
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
dt_print_datum(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
|
dt_print_datum(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
|
||||||
caddr_t addr, size_t size, uint64_t normal)
|
caddr_t addr, size_t size, const dtrace_aggdata_t *aggdata,
|
||||||
|
uint64_t normal, dt_print_aggdata_t *pd)
|
||||||
{
|
{
|
||||||
int err;
|
int err, width;
|
||||||
dtrace_actkind_t act = rec->dtrd_action;
|
dtrace_actkind_t act = rec->dtrd_action;
|
||||||
|
boolean_t packed = pd->dtpa_agghist || pd->dtpa_aggpack;
|
||||||
|
dtrace_aggdesc_t *agg = aggdata->dtada_desc;
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
size_t size;
|
||||||
|
int width;
|
||||||
|
int packedwidth;
|
||||||
|
} *fmt, fmttab[] = {
|
||||||
|
{ sizeof (uint8_t), 3, 3 },
|
||||||
|
{ sizeof (uint16_t), 5, 5 },
|
||||||
|
{ sizeof (uint32_t), 8, 8 },
|
||||||
|
{ sizeof (uint64_t), 16, 16 },
|
||||||
|
{ 0, -50, 16 }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (packed && pd->dtpa_agghisthdr != agg->dtagd_varid) {
|
||||||
|
dtrace_recdesc_t *r;
|
||||||
|
|
||||||
|
width = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To print our quantization header for either an agghist or
|
||||||
|
* aggpack aggregation, we need to iterate through all of our
|
||||||
|
* of our records to determine their width.
|
||||||
|
*/
|
||||||
|
for (r = rec; !DTRACEACT_ISAGG(r->dtrd_action); r++) {
|
||||||
|
for (fmt = fmttab; fmt->size &&
|
||||||
|
fmt->size != r->dtrd_size; fmt++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
width += fmt->packedwidth + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pd->dtpa_agghist) {
|
||||||
|
if (dt_print_quanthdr(dtp, fp, width) < 0)
|
||||||
|
return (-1);
|
||||||
|
} else {
|
||||||
|
if (dt_print_quanthdr_packed(dtp, fp,
|
||||||
|
width, aggdata, r->dtrd_action) < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
pd->dtpa_agghisthdr = agg->dtagd_varid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pd->dtpa_agghist && DTRACEACT_ISAGG(act)) {
|
||||||
|
char positives = aggdata->dtada_flags & DTRACE_A_HASPOSITIVES;
|
||||||
|
char negatives = aggdata->dtada_flags & DTRACE_A_HASNEGATIVES;
|
||||||
|
int64_t val;
|
||||||
|
|
||||||
|
assert(act == DTRACEAGG_SUM || act == DTRACEAGG_COUNT);
|
||||||
|
val = (long long)*((uint64_t *)addr);
|
||||||
|
|
||||||
|
if (dt_printf(dtp, fp, " ") < 0)
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
return (dt_print_quantline(dtp, fp, val, normal,
|
||||||
|
aggdata->dtada_total, positives, negatives));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pd->dtpa_aggpack && DTRACEACT_ISAGG(act)) {
|
||||||
|
switch (act) {
|
||||||
|
case DTRACEAGG_QUANTIZE:
|
||||||
|
return (dt_print_quantize_packed(dtp,
|
||||||
|
fp, addr, size, aggdata));
|
||||||
|
case DTRACEAGG_LQUANTIZE:
|
||||||
|
return (dt_print_lquantize_packed(dtp,
|
||||||
|
fp, addr, size, aggdata));
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (act) {
|
switch (act) {
|
||||||
case DTRACEACT_STACK:
|
case DTRACEACT_STACK:
|
||||||
@ -1839,28 +2220,33 @@ dt_print_datum(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (fmt = fmttab; fmt->size && fmt->size != size; fmt++)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
width = packed ? fmt->packedwidth : fmt->width;
|
||||||
|
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case sizeof (uint64_t):
|
case sizeof (uint64_t):
|
||||||
err = dt_printf(dtp, fp, " %16lld",
|
err = dt_printf(dtp, fp, " %*lld", width,
|
||||||
/* LINTED - alignment */
|
/* LINTED - alignment */
|
||||||
(long long)*((uint64_t *)addr) / normal);
|
(long long)*((uint64_t *)addr) / normal);
|
||||||
break;
|
break;
|
||||||
case sizeof (uint32_t):
|
case sizeof (uint32_t):
|
||||||
/* LINTED - alignment */
|
/* LINTED - alignment */
|
||||||
err = dt_printf(dtp, fp, " %8d", *((uint32_t *)addr) /
|
err = dt_printf(dtp, fp, " %*d", width, *((uint32_t *)addr) /
|
||||||
(uint32_t)normal);
|
(uint32_t)normal);
|
||||||
break;
|
break;
|
||||||
case sizeof (uint16_t):
|
case sizeof (uint16_t):
|
||||||
/* LINTED - alignment */
|
/* LINTED - alignment */
|
||||||
err = dt_printf(dtp, fp, " %5d", *((uint16_t *)addr) /
|
err = dt_printf(dtp, fp, " %*d", width, *((uint16_t *)addr) /
|
||||||
(uint32_t)normal);
|
(uint32_t)normal);
|
||||||
break;
|
break;
|
||||||
case sizeof (uint8_t):
|
case sizeof (uint8_t):
|
||||||
err = dt_printf(dtp, fp, " %3d", *((uint8_t *)addr) /
|
err = dt_printf(dtp, fp, " %*d", width, *((uint8_t *)addr) /
|
||||||
(uint32_t)normal);
|
(uint32_t)normal);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
err = dt_print_bytes(dtp, fp, addr, size, 50, 0, 0);
|
err = dt_print_bytes(dtp, fp, addr, size, width, 0, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1881,6 +2267,9 @@ dt_print_aggs(const dtrace_aggdata_t **aggsdata, int naggvars, void *arg)
|
|||||||
caddr_t addr;
|
caddr_t addr;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
|
pd->dtpa_agghist = (aggdata->dtada_flags & DTRACE_A_TOTAL);
|
||||||
|
pd->dtpa_aggpack = (aggdata->dtada_flags & DTRACE_A_MINMAXBIN);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Iterate over each record description in the key, printing the traced
|
* Iterate over each record description in the key, printing the traced
|
||||||
* data, skipping the first datum (the tuple member created by the
|
* data, skipping the first datum (the tuple member created by the
|
||||||
@ -1897,7 +2286,8 @@ dt_print_aggs(const dtrace_aggdata_t **aggsdata, int naggvars, void *arg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt_print_datum(dtp, fp, rec, addr, size, 1) < 0)
|
if (dt_print_datum(dtp, fp, rec, addr,
|
||||||
|
size, aggdata, 1, pd) < 0)
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
||||||
if (dt_buffered_flush(dtp, NULL, rec, aggdata,
|
if (dt_buffered_flush(dtp, NULL, rec, aggdata,
|
||||||
@ -1920,7 +2310,8 @@ dt_print_aggs(const dtrace_aggdata_t **aggsdata, int naggvars, void *arg)
|
|||||||
assert(DTRACEACT_ISAGG(act));
|
assert(DTRACEACT_ISAGG(act));
|
||||||
normal = aggdata->dtada_normal;
|
normal = aggdata->dtada_normal;
|
||||||
|
|
||||||
if (dt_print_datum(dtp, fp, rec, addr, size, normal) < 0)
|
if (dt_print_datum(dtp, fp, rec, addr,
|
||||||
|
size, aggdata, normal, pd) < 0)
|
||||||
return (-1);
|
return (-1);
|
||||||
|
|
||||||
if (dt_buffered_flush(dtp, NULL, rec, aggdata,
|
if (dt_buffered_flush(dtp, NULL, rec, aggdata,
|
||||||
@ -1931,8 +2322,10 @@ dt_print_aggs(const dtrace_aggdata_t **aggsdata, int naggvars, void *arg)
|
|||||||
agg->dtagd_flags |= DTRACE_AGD_PRINTED;
|
agg->dtagd_flags |= DTRACE_AGD_PRINTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt_printf(dtp, fp, "\n") < 0)
|
if (!pd->dtpa_agghist && !pd->dtpa_aggpack) {
|
||||||
return (-1);
|
if (dt_printf(dtp, fp, "\n") < 0)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
if (dt_buffered_flush(dtp, NULL, NULL, aggdata,
|
if (dt_buffered_flush(dtp, NULL, NULL, aggdata,
|
||||||
DTRACE_BUFDATA_AGGFORMAT | DTRACE_BUFDATA_AGGLAST) < 0)
|
DTRACE_BUFDATA_AGGFORMAT | DTRACE_BUFDATA_AGGLAST) < 0)
|
||||||
@ -2401,7 +2794,7 @@ nofmt:
|
|||||||
}
|
}
|
||||||
|
|
||||||
n = dt_print_bytes(dtp, fp, addr,
|
n = dt_print_bytes(dtp, fp, addr,
|
||||||
tracememsize, 33, quiet, 1);
|
tracememsize, -33, quiet, 1);
|
||||||
|
|
||||||
tracememsize = 0;
|
tracememsize = 0;
|
||||||
|
|
||||||
@ -2434,7 +2827,7 @@ nofmt:
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
n = dt_print_bytes(dtp, fp, addr,
|
n = dt_print_bytes(dtp, fp, addr,
|
||||||
rec->dtrd_size, 33, quiet, 0);
|
rec->dtrd_size, -33, quiet, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,6 +189,9 @@ typedef struct dt_print_aggdata {
|
|||||||
dtrace_aggvarid_t dtpa_id; /* aggregation variable of interest */
|
dtrace_aggvarid_t dtpa_id; /* aggregation variable of interest */
|
||||||
FILE *dtpa_fp; /* file pointer */
|
FILE *dtpa_fp; /* file pointer */
|
||||||
int dtpa_allunprint; /* print only unprinted aggregations */
|
int dtpa_allunprint; /* print only unprinted aggregations */
|
||||||
|
int dtpa_agghist; /* print aggregation as histogram */
|
||||||
|
int dtpa_agghisthdr; /* aggregation histogram hdr printed */
|
||||||
|
int dtpa_aggpack; /* pack quantized aggregations */
|
||||||
} dt_print_aggdata_t;
|
} dt_print_aggdata_t;
|
||||||
|
|
||||||
typedef struct dt_dirpath {
|
typedef struct dt_dirpath {
|
||||||
@ -283,6 +286,7 @@ struct dtrace_hdl {
|
|||||||
uint_t dt_linktype; /* dtrace link output file type (see below) */
|
uint_t dt_linktype; /* dtrace link output file type (see below) */
|
||||||
uint_t dt_xlatemode; /* dtrace translator linking mode (see below) */
|
uint_t dt_xlatemode; /* dtrace translator linking mode (see below) */
|
||||||
uint_t dt_stdcmode; /* dtrace stdc compatibility mode (see below) */
|
uint_t dt_stdcmode; /* dtrace stdc compatibility mode (see below) */
|
||||||
|
uint_t dt_encoding; /* dtrace output encoding (see below) */
|
||||||
uint_t dt_treedump; /* dtrace tree debug bitmap (see below) */
|
uint_t dt_treedump; /* dtrace tree debug bitmap (see below) */
|
||||||
uint64_t dt_options[DTRACEOPT_MAX]; /* dtrace run-time options */
|
uint64_t dt_options[DTRACEOPT_MAX]; /* dtrace run-time options */
|
||||||
int dt_version; /* library version requested by client */
|
int dt_version; /* library version requested by client */
|
||||||
@ -373,6 +377,14 @@ struct dtrace_hdl {
|
|||||||
#define DT_STDC_XS 2 /* K&R C: __STDC__ not defined */
|
#define DT_STDC_XS 2 /* K&R C: __STDC__ not defined */
|
||||||
#define DT_STDC_XT 3 /* ISO C + K&R C compat with ISO: __STDC__=0 */
|
#define DT_STDC_XT 3 /* ISO C + K&R C compat with ISO: __STDC__=0 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values for the dt_encoding property, which is used to force a particular
|
||||||
|
* character encoding (overriding default behavior and/or automatic detection).
|
||||||
|
*/
|
||||||
|
#define DT_ENCODING_UNSET 0
|
||||||
|
#define DT_ENCODING_ASCII 1
|
||||||
|
#define DT_ENCODING_UTF8 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Macro to test whether a given pass bit is set in the dt_treedump bit-vector.
|
* Macro to test whether a given pass bit is set in the dt_treedump bit-vector.
|
||||||
* If the bit for pass 'p' is set, the D compiler displays the parse tree for
|
* If the bit for pass 'p' is set, the D compiler displays the parse tree for
|
||||||
|
@ -122,9 +122,14 @@
|
|||||||
#define DT_VERS_1_8_1 DT_VERSION_NUMBER(1, 8, 1)
|
#define DT_VERS_1_8_1 DT_VERSION_NUMBER(1, 8, 1)
|
||||||
#define DT_VERS_1_9 DT_VERSION_NUMBER(1, 9, 0)
|
#define DT_VERS_1_9 DT_VERSION_NUMBER(1, 9, 0)
|
||||||
#define DT_VERS_1_9_1 DT_VERSION_NUMBER(1, 9, 1)
|
#define DT_VERS_1_9_1 DT_VERSION_NUMBER(1, 9, 1)
|
||||||
#define DT_VERS_LATEST DT_VERS_1_9_1
|
#define DT_VERS_1_9_2 DT_VERSION_NUMBER(1, 9, 2) /* FreeBSD specific */
|
||||||
#define DT_VERS_STRING "Sun D 1.9.1"
|
#define DT_VERS_1_10 DT_VERSION_NUMBER(1, 10, 0)
|
||||||
|
#define DT_VERS_1_11 DT_VERSION_NUMBER(1, 11, 0)
|
||||||
|
#define DT_VERS_1_12 DT_VERSION_NUMBER(1, 12, 0)
|
||||||
|
#define DT_VERS_1_12_1 DT_VERSION_NUMBER(1, 12, 1)
|
||||||
|
#define DT_VERS_LATEST DT_VERS_1_9_2
|
||||||
|
#define DT_VERS_STRING "Sun D 1.9.2"
|
||||||
|
|
||||||
const dt_version_t _dtrace_versions[] = {
|
const dt_version_t _dtrace_versions[] = {
|
||||||
DT_VERS_1_0, /* D API 1.0.0 (PSARC 2001/466) Solaris 10 FCS */
|
DT_VERS_1_0, /* D API 1.0.0 (PSARC 2001/466) Solaris 10 FCS */
|
||||||
DT_VERS_1_1, /* D API 1.1.0 Solaris Express 6/05 */
|
DT_VERS_1_1, /* D API 1.1.0 Solaris Express 6/05 */
|
||||||
@ -145,6 +150,11 @@ const dt_version_t _dtrace_versions[] = {
|
|||||||
DT_VERS_1_8_1, /* D API 1.8.1 */
|
DT_VERS_1_8_1, /* D API 1.8.1 */
|
||||||
DT_VERS_1_9, /* D API 1.9 */
|
DT_VERS_1_9, /* D API 1.9 */
|
||||||
DT_VERS_1_9_1, /* D API 1.9.1 */
|
DT_VERS_1_9_1, /* D API 1.9.1 */
|
||||||
|
DT_VERS_1_9_2, /* D API 1.9.1 */
|
||||||
|
DT_VERS_1_10, /* D API 1.10 */
|
||||||
|
DT_VERS_1_11, /* D API 1.11 */
|
||||||
|
DT_VERS_1_12, /* D API 1.12 */
|
||||||
|
DT_VERS_1_12_1, /* D API 1.12.1 */
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1144,6 +1154,7 @@ alloc:
|
|||||||
dtp->dt_linktype = DT_LTYP_ELF;
|
dtp->dt_linktype = DT_LTYP_ELF;
|
||||||
dtp->dt_xlatemode = DT_XL_STATIC;
|
dtp->dt_xlatemode = DT_XL_STATIC;
|
||||||
dtp->dt_stdcmode = DT_STDC_XA;
|
dtp->dt_stdcmode = DT_STDC_XA;
|
||||||
|
dtp->dt_encoding = DT_ENCODING_UNSET;
|
||||||
dtp->dt_version = version;
|
dtp->dt_version = version;
|
||||||
dtp->dt_fd = dtfd;
|
dtp->dt_fd = dtfd;
|
||||||
dtp->dt_ftfd = ftfd;
|
dtp->dt_ftfd = ftfd;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -336,6 +337,23 @@ dt_opt_linktype(dtrace_hdl_t *dtp, const char *arg, uintptr_t option)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*ARGSUSED*/
|
||||||
|
static int
|
||||||
|
dt_opt_encoding(dtrace_hdl_t *dtp, const char *arg, uintptr_t option)
|
||||||
|
{
|
||||||
|
if (arg == NULL)
|
||||||
|
return (dt_set_errno(dtp, EDT_BADOPTVAL));
|
||||||
|
|
||||||
|
if (strcmp(arg, "ascii") == 0)
|
||||||
|
dtp->dt_encoding = DT_ENCODING_ASCII;
|
||||||
|
else if (strcmp(arg, "utf8") == 0)
|
||||||
|
dtp->dt_encoding = DT_ENCODING_UTF8;
|
||||||
|
else
|
||||||
|
return (dt_set_errno(dtp, EDT_BADOPTVAL));
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static int
|
static int
|
||||||
dt_opt_evaltime(dtrace_hdl_t *dtp, const char *arg, uintptr_t option)
|
dt_opt_evaltime(dtrace_hdl_t *dtp, const char *arg, uintptr_t option)
|
||||||
@ -928,6 +946,7 @@ static const dt_option_t _dtrace_ctoptions[] = {
|
|||||||
{ "define", dt_opt_cpp_opts, (uintptr_t)"-D" },
|
{ "define", dt_opt_cpp_opts, (uintptr_t)"-D" },
|
||||||
{ "droptags", dt_opt_droptags },
|
{ "droptags", dt_opt_droptags },
|
||||||
{ "empty", dt_opt_cflags, DTRACE_C_EMPTY },
|
{ "empty", dt_opt_cflags, DTRACE_C_EMPTY },
|
||||||
|
{ "encoding", dt_opt_encoding },
|
||||||
{ "errtags", dt_opt_cflags, DTRACE_C_ETAGS },
|
{ "errtags", dt_opt_cflags, DTRACE_C_ETAGS },
|
||||||
{ "evaltime", dt_opt_evaltime },
|
{ "evaltime", dt_opt_evaltime },
|
||||||
{ "incdir", dt_opt_cpp_opts, (uintptr_t)"-I" },
|
{ "incdir", dt_opt_cpp_opts, (uintptr_t)"-I" },
|
||||||
@ -988,11 +1007,14 @@ static const dt_option_t _dtrace_rtoptions[] = {
|
|||||||
* Dynamic run-time options.
|
* Dynamic run-time options.
|
||||||
*/
|
*/
|
||||||
static const dt_option_t _dtrace_drtoptions[] = {
|
static const dt_option_t _dtrace_drtoptions[] = {
|
||||||
|
{ "agghist", dt_opt_runtime, DTRACEOPT_AGGHIST },
|
||||||
|
{ "aggpack", dt_opt_runtime, DTRACEOPT_AGGPACK },
|
||||||
{ "aggrate", dt_opt_rate, DTRACEOPT_AGGRATE },
|
{ "aggrate", dt_opt_rate, DTRACEOPT_AGGRATE },
|
||||||
{ "aggsortkey", dt_opt_runtime, DTRACEOPT_AGGSORTKEY },
|
{ "aggsortkey", dt_opt_runtime, DTRACEOPT_AGGSORTKEY },
|
||||||
{ "aggsortkeypos", dt_opt_runtime, DTRACEOPT_AGGSORTKEYPOS },
|
{ "aggsortkeypos", dt_opt_runtime, DTRACEOPT_AGGSORTKEYPOS },
|
||||||
{ "aggsortpos", dt_opt_runtime, DTRACEOPT_AGGSORTPOS },
|
{ "aggsortpos", dt_opt_runtime, DTRACEOPT_AGGSORTPOS },
|
||||||
{ "aggsortrev", dt_opt_runtime, DTRACEOPT_AGGSORTREV },
|
{ "aggsortrev", dt_opt_runtime, DTRACEOPT_AGGSORTREV },
|
||||||
|
{ "aggzoom", dt_opt_runtime, DTRACEOPT_AGGZOOM },
|
||||||
{ "flowindent", dt_opt_runtime, DTRACEOPT_FLOWINDENT },
|
{ "flowindent", dt_opt_runtime, DTRACEOPT_FLOWINDENT },
|
||||||
{ "quiet", dt_opt_runtime, DTRACEOPT_QUIET },
|
{ "quiet", dt_opt_runtime, DTRACEOPT_QUIET },
|
||||||
{ "rawbytes", dt_opt_runtime, DTRACEOPT_RAWBYTES },
|
{ "rawbytes", dt_opt_runtime, DTRACEOPT_RAWBYTES },
|
||||||
|
@ -356,6 +356,12 @@ extern int dtrace_handle_setopt(dtrace_hdl_t *,
|
|||||||
#define DTRACE_A_PERCPU 0x0001
|
#define DTRACE_A_PERCPU 0x0001
|
||||||
#define DTRACE_A_KEEPDELTA 0x0002
|
#define DTRACE_A_KEEPDELTA 0x0002
|
||||||
#define DTRACE_A_ANONYMOUS 0x0004
|
#define DTRACE_A_ANONYMOUS 0x0004
|
||||||
|
#define DTRACE_A_TOTAL 0x0008
|
||||||
|
#define DTRACE_A_MINMAXBIN 0x0010
|
||||||
|
#define DTRACE_A_HASNEGATIVES 0x0020
|
||||||
|
#define DTRACE_A_HASPOSITIVES 0x0040
|
||||||
|
|
||||||
|
#define DTRACE_AGGZOOM_MAX 0.95 /* height of max bar */
|
||||||
|
|
||||||
#define DTRACE_AGGWALK_ERROR -1 /* error while processing */
|
#define DTRACE_AGGWALK_ERROR -1 /* error while processing */
|
||||||
#define DTRACE_AGGWALK_NEXT 0 /* proceed to next element */
|
#define DTRACE_AGGWALK_NEXT 0 /* proceed to next element */
|
||||||
@ -376,6 +382,10 @@ struct dtrace_aggdata {
|
|||||||
caddr_t dtada_delta; /* delta data, if available */
|
caddr_t dtada_delta; /* delta data, if available */
|
||||||
caddr_t *dtada_percpu; /* per CPU data, if avail */
|
caddr_t *dtada_percpu; /* per CPU data, if avail */
|
||||||
caddr_t *dtada_percpu_delta; /* per CPU delta, if avail */
|
caddr_t *dtada_percpu_delta; /* per CPU delta, if avail */
|
||||||
|
int64_t dtada_total; /* per agg total, if avail */
|
||||||
|
uint16_t dtada_minbin; /* minimum bin, if avail */
|
||||||
|
uint16_t dtada_maxbin; /* maximum bin, if avail */
|
||||||
|
uint32_t dtada_flags; /* flags */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef int dtrace_aggregate_f(const dtrace_aggdata_t *, void *);
|
typedef int dtrace_aggregate_f(const dtrace_aggdata_t *, void *);
|
||||||
|
@ -1031,7 +1031,14 @@ typedef struct dtrace_fmtdesc {
|
|||||||
#define DTRACEOPT_AGGSORTPOS 25 /* agg. position to sort on */
|
#define DTRACEOPT_AGGSORTPOS 25 /* agg. position to sort on */
|
||||||
#define DTRACEOPT_AGGSORTKEYPOS 26 /* agg. key position to sort on */
|
#define DTRACEOPT_AGGSORTKEYPOS 26 /* agg. key position to sort on */
|
||||||
#define DTRACEOPT_TEMPORAL 27 /* temporally ordered output */
|
#define DTRACEOPT_TEMPORAL 27 /* temporally ordered output */
|
||||||
#define DTRACEOPT_MAX 28 /* number of options */
|
#define DTRACEOPT_AGGHIST 28 /* histogram aggregation output */
|
||||||
|
#define DTRACEOPT_AGGPACK 29 /* packed aggregation output */
|
||||||
|
#define DTRACEOPT_AGGZOOM 30 /* zoomed aggregation scaling */
|
||||||
|
#define DTRACEOPT_ZONE 31 /* zone in which to enable probes */
|
||||||
|
#define DTRACEOPT_MAX 32 /* number of options */
|
||||||
|
|
||||||
|
#define DTRACEOPT_UNSET (dtrace_optval_t)-2 /* unset option */
|
||||||
|
|
||||||
|
|
||||||
#define DTRACEOPT_UNSET (dtrace_optval_t)-2 /* unset option */
|
#define DTRACEOPT_UNSET (dtrace_optval_t)-2 /* unset option */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user