1 /* 2 Copyright (C) 1993-2004 Hewlett-Packard Company 3 */ 4 5 /* This file contains the test-specific definitions for netperf's */ 6 /* DLPI tests */ 7 8 struct stream_stream_request_struct { 9 int recv_buf_size; 10 int send_buf_size; 11 int receive_size; /* how many bytes do we want to */ 12 /* receive at one time? */ 13 int recv_alignment; /* what is the alignment of the */ 14 /* receive buffer? */ 15 int recv_offset; /* and at what offset from that */ 16 /* alignment? */ 17 int so_rcvavoid; /* do we want the remote to avoid receive copies? */ 18 int so_sndavoid; /* do we want the remote to avoid send copies? */ 19 int measure_cpu; /* does the client want server cpu */ 20 /* utilization measured? */ 21 float cpu_rate; /* do we know how fast the cpu is */ 22 /* already? */ 23 int test_length; /* how long is the test? */ 24 int dirty_count; /* how many integers in the receive buffer */ 25 /* should be made dirty before calling recv? */ 26 int clean_count; /* how many integers should be read from the */ 27 /* recv buffer before calling recv? */ 28 int path_name_len; /* the length of the device name string. this */ 29 /* is used to put it into the proper order on */ 30 /* @#$% byte-swapped boxes... */ 31 char unix_path[32]; /* the path */ 32 }; 33 34 struct stream_stream_response_struct { 35 int recv_buf_size; /* how big does the client want it */ 36 int send_buf_size; 37 int receive_size; 38 int so_rcvavoid; /* do we want the remote to avoid receive copies? */ 39 int so_sndavoid; /* do we want the remote to avoid send copies? */ 40 int measure_cpu; /* does the client want server cpu */ 41 int test_length; /* how long is the test? */ 42 int data_port_number; /* connect to me here */ 43 float cpu_rate; /* could we measure */ 44 int path_name_len; /* the length of the device name string. this */ 45 /* is used to put it into the proper order on */ 46 /* @#$% byte-swapped boxes... */ 47 char unix_path[32]; /* the path */ 48 }; 49 50 struct stream_stream_results_struct { 51 int bytes_received; /* ignored initially */ 52 int recv_calls; /* ignored initially */ 53 float elapsed_time; /* how long the test ran */ 54 float cpu_util; /* -1 if not measured */ 55 float serv_dem; /* -1 if not measured */ 56 int num_cpus; 57 }; 58 59 struct stream_rr_request_struct { 60 int recv_buf_size; /* how big does the client want it */ 61 int send_buf_size; 62 int recv_alignment; 63 int recv_offset; 64 int send_alignment; 65 int send_offset; 66 int request_size; 67 int response_size; 68 int so_rcvavoid; /* do we want the remote to avoid receive copies? */ 69 int so_sndavoid; /* do we want the remote to avoid send copies? */ 70 int measure_cpu; /* does the client want server cpu */ 71 float cpu_rate; /* do we know how fast the cpu is? */ 72 int test_length; /* how long is the test? */ 73 int path_name_len; /* the length of the device name string. this */ 74 /* is used to put it into the proper order on */ 75 /* @#$% byte-swapped boxes... */ 76 char unix_path[32]; /* the path */ 77 }; 78 79 struct stream_rr_response_struct { 80 int recv_buf_size; /* how big does the client want it */ 81 int send_buf_size; 82 int so_rcvavoid; /* do we want the remote to avoid receive copies? */ 83 int so_sndavoid; /* do we want the remote to avoid send copies? */ 84 int measure_cpu; /* does the client want server cpu */ 85 int test_length; /* how long is the test? */ 86 float cpu_rate; /* could we measure */ 87 int path_name_len; /* the length of the device name string. this */ 88 /* is used to put it into the proper order on */ 89 /* @#$% byte-swapped boxes... */ 90 char unix_path[32]; /* the path to the dlpi device */ 91 }; 92 93 struct stream_rr_results_struct { 94 int bytes_received; /* ignored initially */ 95 int recv_calls; /* ignored initially */ 96 int trans_received; /* not ignored */ 97 float elapsed_time; /* how long the test ran */ 98 float cpu_util; /* -1 if not measured */ 99 float serv_dem; /* -1 if not measured */ 100 int num_cpus; 101 }; 102 103 struct dg_stream_request_struct { 104 int recv_buf_size; 105 int message_size; 106 int recv_alignment; 107 int recv_offset; 108 int measure_cpu; 109 float cpu_rate; 110 int test_length; 111 int so_rcvavoid; /* do we want the remote to avoid receive copies? */ 112 int so_sndavoid; /* do we want the remote to avoid send copies? */ 113 int path_name_len; /* the length of the device name string. this */ 114 /* is used to put it into the proper order on */ 115 /* @#$% byte-swapped boxes... */ 116 char unix_path[32]; /* the path */ 117 }; 118 119 struct dg_stream_response_struct { 120 int recv_buf_size; 121 int send_buf_size; 122 int measure_cpu; 123 int test_length; 124 float cpu_rate; 125 int so_rcvavoid; /* could the remote avoid receive copies? */ 126 int so_sndavoid; /* could the remote avoid send copies? */ 127 int path_name_len; /* the length of the device name string. this */ 128 /* is used to put it into the proper order on */ 129 /* @#$% byte-swapped boxes... */ 130 char unix_path[32]; /* the path */ 131 }; 132 133 struct dg_stream_results_struct { 134 int messages_recvd; 135 int bytes_received; 136 float elapsed_time; 137 float cpu_util; 138 int num_cpus; 139 }; 140 141 142 struct dg_rr_request_struct { 143 int recv_buf_size; /* how big does the client want it */ 144 int send_buf_size; 145 int recv_alignment; 146 int recv_offset; 147 int send_alignment; 148 int send_offset; 149 int request_size; 150 int response_size; 151 int measure_cpu; /* does the client want server cpu */ 152 float cpu_rate; /* do we know how fast the cpu is? */ 153 int test_length; /* how long is the test? */ 154 int so_rcvavoid; /* do we want the remote to avoid receive */ 155 /* copies? */ 156 int so_sndavoid; /* do we want the remote to avoid send copies? */ 157 int path_name_len; /* the length of the device name string. this */ 158 /* is used to put it into the proper order on */ 159 /* @#$% byte-swapped boxes... */ 160 char unix_path[32]; /* the path */ 161 }; 162 163 struct dg_rr_response_struct { 164 int recv_buf_size; /* how big does the client want it */ 165 int send_buf_size; 166 int no_delay; 167 int measure_cpu; /* does the client want server cpu */ 168 int test_length; /* how long is the test? */ 169 float cpu_rate; /* could we measure */ 170 int so_rcvavoid; /* could the remote avoid receive copies? */ 171 int so_sndavoid; /* could the remote avoid send copies? */ 172 int path_name_len; /* the length of the device name string. this */ 173 /* is used to put it into the proper order on */ 174 /* @#$% byte-swapped boxes... */ 175 char unix_path[32]; /* the path */ 176 }; 177 178 struct dg_rr_results_struct { 179 int bytes_received; /* ignored initially */ 180 int recv_calls; /* ignored initially */ 181 int trans_received; /* not ignored */ 182 float elapsed_time; /* how long the test ran */ 183 float cpu_util; /* -1 if not measured */ 184 float serv_dem; /* -1 if not measured */ 185 int num_cpus; 186 }; 187 188 extern void scan_unix_args(int argc, char *argv[]); 189 190 extern void send_stream_stream(char remote_host[]); 191 extern void send_stream_rr(char remote_host[]); 192 extern void send_dg_stream(char remote_host[]); 193 extern void send_dg_rr(char remote_host[]); 194 195 extern void recv_stream_stream(); 196 extern void recv_stream_rr(); 197 extern void recv_dg_stream(); 198 extern void recv_dg_rr(); 199