main(int argc, char **argv)
int main(int argc, char **argv)
main(int argc, char **argv){#if defined(XP_UNIX) || defined(XP_OS2_EMX)	int opt;	extern char *optarg;#endif#if defined(XP_UNIX) || defined(XP_OS2_EMX)	while ( (opt = getopt(argc, argv, "c:s:i:t:v")) != EOF) {		switch(opt) {			case 'i':				_iterations = atoi(optarg);				break;			case 't':				_threads_max = _threads = atoi(optarg);				break;			case 'c':				_client_data = atoi(optarg);				break;			case 's':				_server_data = atoi(optarg);				break;			case 'v':				verbose = 1;				break;			default: 				break;		}	}#endif	PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);    PR_STDIO_INIT();#ifdef XP_MAC	SetupMacPrintfLog("sel_spd.log");#endif	fprintf(stdout, "Running test for %d iterations with %d simultaneous threads.\n", 		_iterations, _threads);	fprintf(stdout, "\tWill send %d bytes of client data and %d bytes of server data\n", 		_client_data, _server_data);	if ( (exit_cv = PR_NewMonitor()) == NULL) 		fprintf(stderr, "Error creating monitor for exit cv\n");	if ( (timer_data = (timer_slot_t *)PR_Malloc(2*_threads * sizeof(timer_slot_t))) == NULL) 		fprintf(stderr, "error allocating thread time results array\n");	memset(timer_data, 0 , 2*_threads*sizeof(timer_slot_t));    Measure(do_workUU, "select loop user/user");    Measure(do_workUK, "select loop user/user");    Measure(do_workKU, "select loop user/user");    Measure(do_workKK, "select loop user/user");	return 0;}