]>
git.saurik.com Git - apple/xnu.git/blob - tools/tests/libMicro/write.c
   4  * The contents of this file are subject to the terms 
   5  * of the Common Development and Distribution License 
   6  * (the "License").  You may not use this file except 
   7  * in compliance with the License. 
   9  * You can obtain a copy of the license at 
  10  * src/OPENSOLARIS.LICENSE 
  11  * or http://www.opensolaris.org/os/licensing. 
  12  * See the License for the specific language governing 
  13  * permissions and limitations under the License. 
  15  * When distributing Covered Code, include this CDDL 
  16  * HEADER in each file and include the License file at 
  17  * usr/src/OPENSOLARIS.LICENSE.  If applicable, 
  18  * add the following below this CDDL HEADER, with the 
  19  * fields enclosed by brackets "[]" replaced with your 
  20  * own identifying information: Portions Copyright [yyyy] 
  21  * [name of copyright owner] 
  27  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. 
  28  * Use is subject to license terms. 
  32 #define _XOPEN_SOURCE 500 
  47 #define DEFF                    "/dev/null" 
  51 static char                     *optf 
= DEFF
; 
  52 static long long                opts 
= DEFS
; 
  58         lm_tsdsize 
= sizeof (tsd_t
); 
  60         (void) sprintf(lm_optstr
, "cdf:s:"); 
  62         (void) sprintf(lm_usage
, 
  63             "       [-f file-to-write (default %s)]\n" 
  64             "       [-s buffer-size (default %d)]\n" 
  65             "       [-c ] (make sure buffer is in cache)\n" 
  69             "notes: measures write()\n", 
  72         (void) sprintf(lm_header
, "%8s", "size"); 
  80 benchmark_optswitch(int opt
, char *optarg
) 
  94                 opts 
= sizetoll(optarg
); 
 103 benchmark_initbatch(void *tsd
) 
 105         tsd_t                   
*ts 
= (tsd_t 
*)tsd
; 
 108         if (ts
->ts_buf 
== NULL
) { 
 109                 ts
->ts_buf 
= malloc(opts
); 
 110                 ts
->ts_fd 
= open(optf
, O_WRONLY
); 
 114                         (void) directio(ts
->ts_fd
, DIRECTIO_ON
); 
 117                  * bring buf into cache if specified. 
 121                         for (i 
= 0; i 
< opts
; i
++) 
 125         (void) lseek(ts
->ts_fd
, 0, SEEK_SET
); 
 131 benchmark(void *tsd
, result_t 
*res
) 
 133         tsd_t                   
*ts 
= (tsd_t 
*)tsd
; 
 136         for (i 
= 0; i 
< lm_optB
; i
++) { 
 137                 if (write(ts
->ts_fd
, ts
->ts_buf
, opts
) != opts
) { 
 149         static char             result
[256]; 
 151         (void) sprintf(result
, "%8lld", opts
);