102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/*
202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project        Copyright (C) 1993-2005 Hewlett-Packard Company
302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project*/
402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_CONFIG_H
602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include "config.h"
702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if defined(HAVE_SYS_SOCKET_H)
1002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include <sys/socket.h>
1102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
1202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if defined(HAVE_NETDB_H)
1302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include <netdb.h>
1402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
1502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO)
1602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include "missing/getaddrinfo.h"
1702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
1802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
1902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define PAD_TIME 4
2002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* library routine specifc defines                                      */
2102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXSPECDATA     62      /* how many ints worth of data  */
2202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project                                        /* can tests send...            */
2302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXTIMES        4       /* how many times may we loop   */
2402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project                                        /* to calibrate                 */
2502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXCPUS         256     /* how many CPU's can we track */
2602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXMESSAGESIZE  65536
2702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXALIGNMENT    16384
2802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         MAXOFFSET        4096
2902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DATABUFFERLEN   MAXMESSAGESIZE+MAXALIGNMENT+MAXOFFSET
3002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
3102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DEBUG_ON                1
3202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DEBUG_OFF               2
3302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DEBUG_OK                3
3402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         NODE_IDENTIFY           4
3502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         CPU_CALIBRATE           5
3602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
3702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_STREAM           10
3802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_STREAM_RESPONSE     11
3902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_STREAM_RESULTS      12
4002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
4102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_RR               13
4202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_RR_RESPONSE         14
4302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_RR_RESULTS          15
4402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
4502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_UDP_STREAM           16
4602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDP_STREAM_RESPONSE     17
4702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDP_STREAM_RESULTS      18
4802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
4902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_UDP_RR               19
5002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDP_RR_RESPONSE         20
5102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDP_RR_RESULTS          21
5202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
5302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DLPI_CO_STREAM       22
5402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CO_STREAM_RESPONSE 23
5502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CO_STREAM_RESULTS  24
5602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
5702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DLPI_CO_RR           25
5802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CO_RR_RESPONSE     26
5902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CO_RR_RESULTS      27
6002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
6102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DLPI_CL_STREAM       28
6202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CL_STREAM_RESPONSE 29
6302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CL_STREAM_RESULTS  30
6402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
6502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DLPI_CL_RR           31
6602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CL_RR_RESPONSE     32
6702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DLPI_CL_RR_RESULTS      33
6802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
6902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_CRR              34
7002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_CRR_RESPONSE        35
7102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_CRR_RESULTS         36
7202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
7302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_STREAM_STREAM        37
7402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         STREAM_STREAM_RESPONSE  38
7502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         STREAM_STREAM_RESULTS   39
7602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
7702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_STREAM_RR            40
7802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         STREAM_RR_RESPONSE      41
7902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         STREAM_RR_RESULTS       42
8002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
8102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DG_STREAM            43
8202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DG_STREAM_RESPONSE      44
8302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DG_STREAM_RESULTS       45
8402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
8502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DG_RR                46
8602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DG_RR_RESPONSE          47
8702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DG_RR_RESULTS           48
8802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
8902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_FORE_STREAM          49
9002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         FORE_STREAM_RESPONSE    50
9102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         FORE_STREAM_RESULTS     51
9202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
9302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_FORE_RR              52
9402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         FORE_RR_RESPONSE        53
9502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         FORE_RR_RESULTS         54
9602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
9702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_HIPPI_STREAM         55
9802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         HIPPI_STREAM_RESPONSE   56
9902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         HIPPI_STREAM_RESULTS    57
10002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
10102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_HIPPI_RR             52
10202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         HIPPI_RR_RESPONSE       53
10302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         HIPPI_RR_RESULTS        54
10402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
10502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_XTI_TCP_STREAM       55
10602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_STREAM_RESPONSE 56
10702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_STREAM_RESULTS  57
10802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
10902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_XTI_TCP_RR           58
11002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_RR_RESPONSE     59
11102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_RR_RESULTS      60
11202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
11302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_XTI_UDP_STREAM       61
11402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_UDP_STREAM_RESPONSE 62
11502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_UDP_STREAM_RESULTS  63
11602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
11702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_XTI_UDP_RR           64
11802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_UDP_RR_RESPONSE     65
11902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_UDP_RR_RESULTS      66
12002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
12102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_XTI_TCP_CRR          67
12202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_CRR_RESPONSE    68
12302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         XTI_TCP_CRR_RESULTS     69
12402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
12502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_TRR              70
12602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_TRR_RESPONSE        71
12702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_TRR_RESULTS         72
12802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
12902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_NBRR             73
13002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_NBRR_RESPONSE       74
13102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_NBRR_RESULTS        75
13202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
13302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCPIPV6_STREAM           76
13402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_STREAM_RESPONSE     77
13502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_STREAM_RESULTS      78
13602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
13702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCPIPV6_RR               79
13802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_RR_RESPONSE         80
13902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_RR_RESULTS          81
14002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
14102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_UDPIPV6_STREAM           82
14202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDPIPV6_STREAM_RESPONSE     83
14302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDPIPV6_STREAM_RESULTS      84
14402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
14502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_UDPIPV6_RR               85
14602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDPIPV6_RR_RESPONSE         86
14702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         UDPIPV6_RR_RESULTS          87
14802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
14902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCPIPV6_CRR              88
15002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_CRR_RESPONSE        89
15102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_CRR_RESULTS         90
15202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
15302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCPIPV6_TRR              91
15402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_TRR_RESPONSE        92
15502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCPIPV6_TRR_RESULTS         93
15602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
15702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_MAERTS               94
15802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_MAERTS_RESPONSE         95
15902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_MAERTS_RESULTS          96
16002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
16102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_LWPSTR_STREAM           100
16202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPSTR_STREAM_RESPONSE     110
16302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPSTR_STREAM_RESULTS      120
16402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
16502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_LWPSTR_RR               130
16602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPSTR_RR_RESPONSE         140
16702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPSTR_RR_RESULTS          150
16802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
16902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_LWPDG_STREAM            160
17002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPDG_STREAM_RESPONSE      170
17102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPDG_STREAM_RESULTS       180
17202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
17302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_LWPDG_RR                190
17402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPDG_RR_RESPONSE          200
17502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         LWPDG_RR_RESULTS           210
17602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
17702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_TCP_CC                  300
17802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_CC_RESPONSE            301
17902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         TCP_CC_RESULTS             302
18002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
18102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* The DNS_RR test has been removed from netperf but we leave these
18202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   here for historical purposes.  Those wanting to do DNS_RR tests
18302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   should use netperf4 instead. */
18402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_DNS_RR                  400
18502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DNS_RR_RESPONSE            401
18602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DNS_RR_RESULTS             402
18702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
18802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SCTP_STREAM             500
18902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_STREAM_RESPONSE       501
19002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_STREAM_RESULT         502
19102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
19202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SCTP_STREAM_MANY        510
19302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_STREAM_MANY_RESPONSE  511
19402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_STREAM_MANY_RESULT    512
19502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
19602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SCTP_RR                 520
19702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_RR_RESPONSE           521
19802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_RR_RESULT             502
19902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
20002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SCTP_RR_MANY            530
20102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_RR_MANY_RESPONSE      531
20202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SCTP_RR_MANY_RESULT        532
20302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
20402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SDP_STREAM              540
20502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_STREAM_RESPONSE        541
20602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_STREAM_RESULTS         542
20702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
20802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SDP_RR                  543
20902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_RR_RESPONSE            544
21002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_RR_RESULTS             545
21102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
21202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SDP_MAERTS              546
21302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_MAERTS_RESPONSE        547
21402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_MAERTS_RESULTS         548
21502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
21602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SDP_CRR                 549
21702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_CRR_RESPONSE           550
21802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_CRR_RESULTS            551
21902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
22002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         DO_SDP_CC                  552
22102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_CC_RESPONSE            553
22202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define         SDP_CC_RESULTS             554
22302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
22402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if HAVE_INTTYPES_H
22502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include <inttypes.h>
22602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#else
22702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# if HAVE_STDINT_H
22802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#  include <stdint.h>
22902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# endif
23002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
23102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
23202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectenum sock_buffer{
23302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  SEND_BUFFER,
23402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  RECV_BUFFER
23502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
23602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
23702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* some of the fields in these structures are going to be doubles and */
23802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* such. so, we probably want to ensure that they will start on */
23902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* "double" boundaries. this will break compatability to pre-2.1 */
24002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* releases, but then, backwards compatability has never been a */
24102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* stated goal of netperf. raj 11/95 */
24202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
24302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectunion netperf_request_struct {
24402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  struct {
24502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int     request_type;
24602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int     dummy;
24702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int     test_specific_data[MAXSPECDATA];
24802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  } content;
24902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  double dummy;
25002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
25102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
25202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectunion netperf_response_struct {
25302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  struct {
25402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int response_type;
25502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int serv_errno;
25602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project    int test_specific_data[MAXSPECDATA];
25702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  } content;
25802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  double dummy;
25902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
26002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
26102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct ring_elt {
26202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  struct ring_elt *next;  /* next element in the ring */
26302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  char *buffer_base;      /* in case we have to free it at somepoint */
26402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  char *buffer_ptr;       /* the aligned and offset pointer */
26502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
26602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
26702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* +*+ SAF  Sorry about the hacks with errno; NT made me do it :(
26802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
26902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project WinNT does define an errno.
27002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project It is mostly a legacy from the XENIX days.
27102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
27202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project Depending upon the version of the C run time that is linked in, it is
27302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project either a simple variable (like UNIX code expects), but more likely it
27402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project is the address of a procedure to return the error number.  So any
27502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project code that sets errno is likely to be overwriting the address of this
27602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project procedure.  Worse, only a tiny fraction of NT's errors get set
27702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project through errno.
27802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
27902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project So I have changed the netperf code to use a define Set_errno when
28002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project that is it's intent.  On non-windows platforms this is just an
28102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project assignment to errno.  But on NT this calls SetLastError.
28202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
28302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project I also define errno (now only used on right side of assignments)
28402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project on NT to be GetLastError.
28502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
28602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project Similarly, perror is defined on NT, but it only accesses the same
28702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project XENIX errors that errno covers.  So on NT this is redefined to be
28802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project Perror and it expands all GetLastError texts. */
28902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
29002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
29102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32
29202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* INVALID_SOCKET == INVALID_HANDLE_VALUE == (unsigned int)(~0) */
29302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* SOCKET_ERROR == -1 */
29402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define ENOTSOCK WSAENOTSOCK
29502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define EINTR    WSAEINTR
29602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define ENOBUFS  WSAENOBUFS
29702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define EWOULDBLOCK    WSAEWOULDBLOCK
29802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define EAFNOSUPPORT  WSAEAFNOSUPPORT
29902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* I don't use a C++ style of comment because it upsets some C
30002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   compilers, possibly even when it is inside an ifdef WIN32... */
30102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* from public\sdk\inc\crt\errno.h */
30202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define ENOSPC          28
30302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
30402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef errno
30502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* delete the one from stdlib.h  */
30602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/*#define errno       (*_errno()) */
30702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#undef errno
30802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
30902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define errno GetLastError()
31002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define Set_errno(num) SetLastError((num))
31102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
31202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define perror(text) PrintWin32Error(stderr, (text))
31302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define Print_errno(stream, text) PrintWin32Error((stream), (text))
31402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
31502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern void PrintWin32Error(FILE *stream, LPSTR text);
31602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
31702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if !defined(NT_PERF) && !defined(USE_LOOPER)
31802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define NT_PERF
31902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
32002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#else
32102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Really shouldn't use manifest constants! */
32202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/*+*+SAF There are other examples of "== -1" and "<0" that probably */
32302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/*+*+SAF should be cleaned up as well. */
32402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define INVALID_SOCKET -1
32502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_ERROR -1
32602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
32702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET int
32802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define Set_errno(num) errno = (num)
32902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
33002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define Print_errno(stream, text) fprintf((stream), "%s  errno %d\n", (text), errno)
33102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
33202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
33302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Robin & Rick's kludge to try to have a timer signal EINTR by closing  */
33402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* the socket from another thread can also return several other errors. */
33502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Let's define a macro to hide all of this. */
33602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
33702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef WIN32
33802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EINTR(return_value) (errno == EINTR)
33902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EADDRINUSE(return_value) (errno == EADDRINUSE)
34002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EADDRNOTAVAIL(return_value) (errno == EADDRNOTAVAIL)
34102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
34202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#else
34302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
34402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* not quite sure I like the extra cases for WIN32 but that is what my
34502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   WIN32 expert sugested.  I'm not sure what WSA's to put for
34602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   EADDRINUSE */
34702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
34802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EINTR(return_value) \
34902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		(((return_value) == SOCKET_ERROR) && \
35002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project	     ((errno == EINTR) || \
35102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project	      (errno == WSAECONNABORTED) || \
35202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project	      (errno == WSAECONNRESET) ))
35302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EADDRINUSE(return_value) \
35402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		(((return_value) == SOCKET_ERROR) && \
35502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project	     ((errno == WSAEADDRINUSE) ))
35602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SOCKET_EADDRNOTAVAIL(return_value) \
35702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		(((return_value) == SOCKET_ERROR) && \
35802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project	     ((errno == WSAEADDRNOTAVAIL) ))
35902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
36002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
36102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_SENDFILE
36202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
36302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectstruct sendfile_ring_elt {
36402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  struct sendfile_ring_elt *next; /* next element in the ring */
36502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int fildes;                     /* the file descriptor of the source
36602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     file */
36702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  off_t offset;                   /* the offset from the beginning of
36802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     the file for this send */
36902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  size_t length;                  /* the number of bytes to send -
37002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     this is redundant with the
37102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     send_size variable but I decided
37202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     to include it anyway */
37302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  struct iovec *hdtrl;            /* a pointer to a header/trailer
37402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     that we do not initially use and
37502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     so should be set to NULL when the
37602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     ring is setup. */
37702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  int flags;                      /* the flags to pass to sendfile() -
37802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     presently unused and should be
37902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     set to zero when the ring is
38002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				     setup. */
38102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project};
38202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
38302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_SENDFILE */
38402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
38502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* the diferent codes to denote the type of CPU utilization */
38602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* methods used */
38702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define CPU_UNKNOWN     0
38802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define HP_IDLE_COUNTER 1
38902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define PSTAT           2
39002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define TIMES           3
39102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define LOOPER          4
39202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define GETRUSAGE       5
39302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define NT_METHOD       6
39402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define KSTAT           7
39502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define PROC_STAT       8
39602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define SYSCTL          9
39702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define PERFSTAT       10
39802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define KSTAT_10       11
39902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define OSX            12
40002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
40102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define BADCH ('?')
40202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
40302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef NETLIB
40402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32
40502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef _GETOPT_
40602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define _GETOPT_
40702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
40802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectint getopt(int argc, char **argv, char *optstring);
40902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
41002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern char *optarg;		/* returned arg to go with this option */
41102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int optind;		/* index to next argv element to process */
41202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int opterr;		/* should error messages be printed? */
41302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int optopt;		/* */
41402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
41502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* _GETOPT_ */
41602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
41702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  SOCKET     win_kludge_socket, win_kludge_socket2;
41802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WIN32 */
41902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
42002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int   local_proc_affinity, remote_proc_affinity;
42102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
42202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* these are to allow netperf to be run easily through those evil,
42302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   end-to-end breaking things known as firewalls */
42402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern char local_data_port[10];
42502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern char remote_data_port[10];
42602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
42702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern char *local_data_address;
42802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern char *remote_data_address;
42902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
43002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int local_data_family;
43102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int remote_data_family;
43202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
43302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  union netperf_request_struct netperf_request;
43402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  union netperf_response_struct netperf_response;
43502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
43602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float    lib_local_cpu_util;
43702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float    lib_elapsed;
43802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float    lib_local_maxrate;
43902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
44002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char    libfmt;
44102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
44202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     cpu_method;
44302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     lib_num_loc_cpus;
44402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     lib_num_rem_cpus;
44502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  SOCKET  server_sock;
44602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     times_up;
44702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  FILE    *where;
44802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     loops_per_msec;
44902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float   lib_local_per_cpu_util[];
45002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
45102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    netlib_init();
45202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     netlib_get_page_size();
45302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    install_signal_catchers();
45402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    establish_control(char hostname[],
45502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				  char port[],
45602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				  int af,
45702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				  char local_hostname[],
45802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				  char local_port[],
45902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				  int local_af);
46002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    shutdown_control();
46102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    init_stat();
46202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    send_request();
46302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    recv_response();
46402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    send_response();
46502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    recv_request();
46602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    dump_request();
46702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    dump_addrinfo(FILE *dumploc, struct addrinfo *info,
46802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			      char *host, char *port, int family);
46902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    start_timer(int time);
47002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    stop_timer();
47102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    cpu_start(int measure_cpu);
47202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    cpu_stop(int measure_cpu, float *elapsed);
47302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void	calculate_confidence(int confidence_iterations,
47402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     float time,
47502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     double result,
47602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     float loc_cpu,
47702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     float rem_cpu,
47802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     float loc_sd,
47902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project		     float rem_sd);
48002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void	retrieve_confident_values(float *elapsed_time,
48102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  double *thruput,
48202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  float *local_cpu_utilization,
48302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  float *remote_cpu_utilization,
48402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  float *local_service_demand,
48502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  float *remote_service_demand);
48602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    display_confidence();
48702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    set_sock_buffer(SOCKET sd,
48802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				enum sock_buffer which,
48902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				int requested_size,
49002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				int *effective_sizep);
49102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char   *format_units();
49202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
49302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char    *inet_ftos(int family);
49402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char    *inet_ttos(int type);
49502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char    *inet_ptos(int protocol);
49602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  ntohd(double net_double);
49702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  htond(double host_double);
49802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     inet_nton(int af, const void *src, char *dst, int cnt);
49902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    libmain();
50002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  calc_thruput(double units_received);
50102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  calc_thruput_interval(double units_received,double elapsed);
50202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  calc_thruput_omni(double units_received);
50302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  double  calc_thruput_interval_omni(double units_received,double elapsed);
50402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float   calibrate_local_cpu(float local_cpu_rate);
50502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float   calibrate_remote_cpu();
50602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    bind_to_specific_processor(int processor_affinity,int use_cpu_map);
50702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int      set_nonblock (SOCKET sock);
50802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
50902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef WIN32
51002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
51102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* WIN32 requires that at least one of the file sets to select be
51202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project non-null.  Since msec_sleep routine is only called by nettest_dlpi &
51302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project nettest_unix, let's duck this issue. */
51402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
51502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int msec_sleep( int msecs );
51602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif  /* WIN32 */
51702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float   calc_cpu_util(float elapsed_time);
51802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float	calc_service_demand(double units_sent,
51902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				    float elapsed_time,
52002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				    float cpu_utilization,
52102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project				    int num_cpus);
52202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  float	calc_service_demand_trans(double units_sent,
52302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project					  float elapsed_time,
52402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project					  float cpu_utilization,
52502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project					  int num_cpus);
52602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if defined(__hpux)
52702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    catcher(int, siginfo_t *,void *);
52802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#else
52902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  void    catcher(int);
53002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* __hpux */
53102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  struct ring_elt *allocate_buffer_ring();
53202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern void access_buffer(char *buffer_ptr,
53302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  int length,
53402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  int dirty_count,
53502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			  int clean_count);
53602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
53702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_ICSC_EXS
53802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  struct ring_elt *allocate_exs_buffer_ring();
53902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_ICSC_EXS */
54002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef HAVE_SENDFILE
54102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  struct sendfile_ring_elt *alloc_sendfile_buf_ring();
54202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_SENDFILE */
54302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_DLPI
54402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* it seems that AIX in its finite wisdom has some bogus define in an
54502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   include file which defines "rem_addr" which then screws-up this extern
54602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   unless we change the names to protect the guilty. reported by Eric
54702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   Jones */
54802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int dl_connect(int fd, unsigned char *remote_addr, int remote_addr_len);
54902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern int dl_bind(int fd, int sap, int mode, char *dlsap_ptr, int *dlsap_len);
55002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  int     dl_open(char devfile[], int ppa);
55102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* WANT_DLPI */
55202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern  char    format_cpu_method(int method);
55302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern unsigned int convert(char *string);
55402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern unsigned int convert_timespec(char *string);
55502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
55602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WANT_INTERVALS
55702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern void start_itimer(unsigned int interval_len_msec);
55802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
55902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* these are all for the confidence interval stuff */
56002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Projectextern double confidence;
56102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
56202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
56302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
56402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32
56502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define close(x)	closesocket(x)
56602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define strcasecmp(a,b) _stricmp(a,b)
56702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define getpid() ((int)GetCurrentProcessId())
56802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
56902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
57002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32
57102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if 0
57202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Should really use safe string functions; but not for now... */
57302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#include <strsafe.h>
57402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Microsoft has deprecated _snprintf; it isn't guarenteed to null terminate the result buffer. */
57502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* They want us to call StringCbPrintf instead; it always null terminates the string. */
57602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
57702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
57802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define snprintf _snprintf
57902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
58002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
58102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project/* Define a macro to align a buffer with an offset from a power of 2
58202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project   boundary. */
58302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
58402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef WIN32
58502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define ULONG_PTR unsigned long
58602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
58702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
58802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define ALIGN_BUFFER(BufPtr, Align, Offset) \
58902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project  (char *)(( (ULONG_PTR)(BufPtr) + \
59002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			(ULONG_PTR) (Align) -1) & \
59102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project			~((ULONG_PTR) (Align) - 1)) + (ULONG_PTR)(Offset)
59202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
59302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* if your system has bcopy and bzero, include it here, otherwise, we */
59402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project /* will try to use memcpy aand memset. fix from Bruce Barnett @ GE. */
59502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#if defined(hpux) || defined (__VMS)
59602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define HAVE_BCOPY
59702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define HAVE_BZERO
59802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
59902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
60002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef WIN32
60102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define HAVE_MIN
60202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#else
60302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define _stdcall
60402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define _cdecl
60502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
60602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
60702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef HAVE_BCOPY
60802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define bcopy(s,d,h) memcpy((d),(s),(h))
60902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_BCOPY */
61002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
61102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef HAVE_BZERO
61202fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define bzero(p,h) memset((p),0,(h))
61302fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_BZERO */
61402fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
61502fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifndef HAVE_MIN
61602fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#define min(a,b) ((a < b) ? a : b)
61702fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif /* HAVE_MIN */
61802fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project
61902fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#ifdef USE_PERFSTAT
62002fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project# include <libperfstat.h>
62102fb0aca1189a2c1fd20806c588e9ee80d9755f8The Android Open Source Project#endif
622