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