]>
git.saurik.com Git - apple/xnu.git/blob - tools/tests/libMicro/socket.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. 
  35 #include <sys/socket.h> 
  44 #define DEFF            "PF_UNIX" 
  46 static char                     *optf 
= DEFF
; 
  50 lookup_family(char *name
) 
  52         if (strcmp("PF_UNIX", name
) == 0) { 
  54         } else if (strcmp("PF_INET", name
) == 0) { 
  56         } else if (strcmp("PF_INET6", name
) == 0) { 
  66         lm_tsdsize 
= sizeof (tsd_t
); 
  70         (void) sprintf(lm_optstr
, "f:n"); 
  72         (void) sprintf(lm_usage
, 
  73             "       [-f socket-family (default %s)]\n" 
  74             "notes: measures socket\n", 
  81 benchmark_optswitch(int opt
, char *optarg
) 
  98         (void) setfdlimit(lm_optB 
* lm_optT 
+ 10); 
  99         family 
= lookup_family(optf
); 
 111 benchmark_initbatch(void *tsd
) 
 114         tsd_t                   
*ts 
= (tsd_t 
*)tsd
; 
 116         if (ts
->ts_once
++ == 0) { 
 117                 ts
->ts_fds 
= (int *)malloc(lm_optB 
* sizeof (int)); 
 118                 if (ts
->ts_fds 
== NULL
) { 
 121                 for (i 
= 0; i 
< lm_optB
; i
++) { 
 130 benchmark(void *tsd
, result_t 
*res
) 
 133         tsd_t                   
*ts 
= (tsd_t 
*)tsd
; 
 135         for (i 
= 0; i 
< lm_optB
; i
++) { 
 136                 ts
->ts_fds
[i
] = socket(family
, SOCK_STREAM
, 0); 
 137                 if (ts
->ts_fds
[i
] == -1) { 
 141         res
->re_count 
+= lm_optB
; 
 147 benchmark_finibatch(void *tsd
) 
 150         tsd_t                   
*ts 
= (tsd_t 
*)tsd
; 
 152         for (i 
= 0; i 
< lm_optB
; i
++) { 
 153                 (void) close(ts
->ts_fds
[i
]);