]>
git.saurik.com Git - apple/xnu.git/blob - tools/tests/libMicro/apple/lmbench_read.c
15225ddcdbd9d606a2929f84410b9ed946b7024d
2 * Copyright (c) 2006 Apple Inc. All Rights Reserved.
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
31 #pragma ident "@(#)lmbench_read.c 1.5 05/08/04 Apple Inc."
36 #define _XOPEN_SOURCE 500
44 #include "../libmicro.h"
51 #define DEFF "/dev/zero"
54 static char *optf
= DEFF
;
55 static long long opts
= DEFS
;
61 lm_tsdsize
= sizeof (tsd_t
);
63 (void) sprintf(lm_optstr
, "f:s:w");
65 (void) sprintf(lm_usage
,
66 " [-f file-to-read (default %s)]\n"
67 " [-s buffer-size (default %d)]\n"
68 " [-w (store a byte to each page after read)]\n"
69 "notes: measures lmbench_read()\n",
72 (void) sprintf(lm_header
, "%8s", "size");
80 benchmark_optswitch(int opt
, char *optarg
)
90 opts
= sizetoll(optarg
);
105 benchmark_initbatch(void *tsd
)
107 tsd_t
*ts
= (tsd_t
*)tsd
;
109 if (ts
->ts_buf
== NULL
) {
110 ts
->ts_buf
= malloc(opts
);
111 ts
->ts_fd
= open(optf
, O_RDONLY
);
114 (void) lseek(ts
->ts_fd
, 0, SEEK_SET
);
120 benchmark(void *tsd
, result_t
*res
)
122 tsd_t
*ts
= (tsd_t
*)tsd
;
126 * The libmicro test uses a for loop as below:
127 * for (i = 0; i < lm_optB; i++) {
129 * we can probably get away with using lm_optB
130 * in the while loop below
135 while (i
++ < lm_optB
) {
136 if (read(ts
->ts_fd
, ts
->ts_buf
, opts
) != opts
) {
140 for (j
= 0; j
< opts
; j
+= optw
)
151 static char result
[256];
153 (void) sprintf(result
, "%8lld", opts
);