]>
git.saurik.com Git - apple/xnu.git/blob - tools/tests/libMicro/libmicro.h
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
24 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
33 #define LIBMICRO_VERSION "0.4.0"
50 #define DATASIZE 100000
53 * stats we compute on data sets
56 typedef struct stats
{
63 double st_99confidence
;
66 double st_timecorr
; /* correlation with respect to time */
74 int ba_hwm
; /* barrier setpoint */
75 int ba_flag
; /* benchmark while true */
76 long long ba_deadline
; /* when to stop */
77 int ba_phase
; /* number of time used */
78 int ba_waiters
; /* how many are waiting */
83 pthread_mutex_t ba_lock
;
87 long long ba_count
; /* how many ops */
88 long long ba_errors
; /* how many errors */
90 int ba_quant
; /* how many quant errors */
91 int ba_batches
; /* how many samples */
93 double ba_starttime
; /* test time start */
94 double ba_endtime
; /* test time end */
97 double ba_tmin
; /* min time taken */
98 double ba_tmax
; /* max time taken */
99 double ba_ctmax
; /* max after outliers */
100 double ba_mean
; /* average value */
101 double ba_median
; /* median value */
102 double ba_rawmedian
; /* raw median value */
103 double ba_stddev
; /* standard deviation */
104 double ba_stderr
; /* standard error */
105 double ba_skew
; /* skew */
106 double ba_kurtosis
; /* kurtosis */
108 stats_t ba_raw
; /* raw stats */
109 stats_t ba_corrected
; /* corrected stats */
111 int ba_outliers
; /* outlier count */
113 long long ba_t0
; /* first thread/proc */
114 long long ba_t1
; /* time of last thread */
116 long long ba_errors0
;
118 int ba_datasize
; /* possible #items data */
119 double ba_data
[1]; /* start of data ararry */
127 barrier_t
*barrier_create(int hwm
, int datasize
);
128 int barrier_destroy(barrier_t
*bar
);
129 int barrier_queue(barrier_t
*bar
, result_t
*res
);
133 * Functions that can be provided by the user
136 int benchmark(void *tsd
, result_t
*res
);
137 int benchmark_init();
138 int benchmark_fini();
139 int benchmark_initrun();
140 int benchmark_finirun();
141 int benchmark_initworker();
142 int benchmark_finiworker();
143 int benchmark_initbatch(void *tsd
);
144 int benchmark_finibatch(void *tsd
);
145 int benchmark_optswitch(int opt
, char *optarg
);
146 char *benchmark_result();
150 * Globals exported to the user
154 extern char **lm_argv
;
159 extern char *lm_optN
;
167 extern char *lm_defN
;
171 extern int lm_nsecs_per_op
;
173 extern char *lm_procpath
;
174 extern char lm_procname
[STRSIZE
];
175 extern char lm_usage
[STRSIZE
];
176 extern char lm_optstr
[STRSIZE
];
177 extern char lm_header
[STRSIZE
];
178 extern size_t lm_tsdsize
;
187 void *gettsd(int p
, int t
);
188 #if defined(__APPLE__)
189 int gettsdindex(void *arg
);
190 #endif /* __APPLE__ */
191 long long getusecs();
192 long long getnsecs();
193 int setfdlimit(int limit
);
194 long long sizetoll();
196 int fit_line(double *, double *, int, double *, double *);
197 long long get_nsecs_resolution();
200 /* Apple Mods Here */
205 #define TCP_SELECT -31233
206 #define TCP_XACT -31234
207 #define TCP_CONTROL -31235
208 #define TCP_DATA -31236
209 #define TCP_CONNECT -31237
210 #define UDP_XACT -31238
211 #define UDP_DATA -31239
213 #define TCP_SELECT (u_long)404038 /* XXX - unregistered */
214 #define TCP_XACT (u_long)404039 /* XXX - unregistered */
215 #define TCP_CONTROL (u_long)404040 /* XXX - unregistered */
216 #define TCP_DATA (u_long)404041 /* XXX - unregistered */
217 #define TCP_CONNECT (u_long)404042 /* XXX - unregistered */
218 #define UDP_XACT (u_long)404032 /* XXX - unregistered */
219 #define UDP_DATA (u_long)404033 /* XXX - unregistered */
220 #define VERS (u_long)1
224 * socket send/recv buffer optimizations
226 #define SOCKOPT_READ 0x0001
227 #define SOCKOPT_WRITE 0x0002
228 #define SOCKOPT_RDWR 0x0003
229 #define SOCKOPT_PID 0x0004
230 #define SOCKOPT_REUSE 0x0008
231 #define SOCKOPT_NONE 0
234 #define SOCKBUF (1024*1024)
238 #define XFERSIZE (64*1024) /* all bandwidth I/O should use this */
241 typedef unsigned long iter_t
;
243 int tcp_server(int prog
, int rdwr
);
244 int tcp_done(int prog
);
245 int tcp_accept(int sock
, int rdwr
);
246 int tcp_connect(char *host
, int prog
, int rdwr
);
247 void sock_optimize(int sock
, int rdwr
);
253 #endif /* LIBMICRO_H */