Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Mar 2015 17:28:28 +0000 (UTC)
From:      Bartek Rutkowski <robak@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r381939 - in head/benchmarks/netio: . files
Message-ID:  <201503221728.t2MHSSGm010085@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: robak
Date: Sun Mar 22 17:28:27 2015
New Revision: 381939
URL: https://svnweb.freebsd.org/changeset/ports/381939
QAT: https://qat.redports.org/buildarchive/r381939/

Log:
  benchmarks/netio: update 1.26 -> 1.32
  
  - Fix clang build issues
  - Maintainer's timeout (arved@FreeBSD.org)
  
  PR:		181789
  Submitted by:	Pawel Biernacki <pawel.biernacki@gmail.com>

Modified:
  head/benchmarks/netio/Makefile
  head/benchmarks/netio/distinfo
  head/benchmarks/netio/files/patch-netio.c

Modified: head/benchmarks/netio/Makefile
==============================================================================
--- head/benchmarks/netio/Makefile	Sun Mar 22 17:12:13 2015	(r381938)
+++ head/benchmarks/netio/Makefile	Sun Mar 22 17:28:27 2015	(r381939)
@@ -2,11 +2,11 @@
 # $FreeBSD$
 
 PORTNAME=	netio
-PORTVERSION=	1.26
+PORTVERSION=	1.32
 CATEGORIES=	benchmarks net ipv6
 MASTER_SITES=	${MASTER_SITE_LOCAL}
 MASTER_SITE_SUBDIR=	arved
-DISTNAME=	netio126
+DISTNAME=	netio132
 
 MAINTAINER=	arved@FreeBSD.org
 COMMENT=	Network benchmark
@@ -15,7 +15,7 @@ WRKSRC=		${WRKDIR}
 USES=		gmake zip
 PLIST_FILES=	bin/netio
 
-CFLAGS+=	-DUNIX
+CFLAGS+=	-DUNIX -DSOCKLEN_T
 LIBS+=		-pthread
 MAKE_ENV+=	OUT=-o
 

Modified: head/benchmarks/netio/distinfo
==============================================================================
--- head/benchmarks/netio/distinfo	Sun Mar 22 17:12:13 2015	(r381938)
+++ head/benchmarks/netio/distinfo	Sun Mar 22 17:28:27 2015	(r381939)
@@ -1,2 +1,2 @@
-SHA256 (netio126.zip) = 86c0bdee3224477b43c0cb6161ce1a20b2a2b6d59ef37f67864227096d9e8d5c
-SIZE (netio126.zip) = 140402
+SHA256 (netio132.zip) = c21550dfac6634558a7a79957eed28c46c62e0543017ef9d5c97c49f3cd41ddd
+SIZE (netio132.zip) = 162484

Modified: head/benchmarks/netio/files/patch-netio.c
==============================================================================
--- head/benchmarks/netio/files/patch-netio.c	Sun Mar 22 17:12:13 2015	(r381938)
+++ head/benchmarks/netio/files/patch-netio.c	Sun Mar 22 17:28:27 2015	(r381939)
@@ -1,282 +1,3126 @@
---- netio.c.orig	Tue Aug 30 16:47:18 2005
-+++ netio.c	Sat Sep  2 13:46:50 2006
-@@ -782,8 +782,13 @@
- const int sobufsize = 131072;
- int nPort = DEFAULTPORT;
- int nAuxPort = DEFAULTPORT + 1;
-+#ifdef USE_IPV6
-+struct in6_addr addr_server;
-+struct in6_addr addr_local;
-+#else
- struct in_addr addr_server;
- struct in_addr addr_local;
-+#endif
- 
- int udpsocket, udpd;
- unsigned long nUDPCount;
-@@ -794,7 +799,11 @@
-   char *cBuffer;
-   CONTROL ctl;
-   long long nData;
-+#ifdef USE_IPV6
-+  struct sockaddr_in6 sa_server, sa_client;
-+#else
-   struct sockaddr_in sa_server, sa_client;
-+#endif
-   int server, client;
-   size_t length;
-   struct timeval tv;
-@@ -808,7 +817,11 @@
-     return THREADRESULT;
-   }
- 
-+#ifdef USE_IPV6
-+  if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
-+#else
-   if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
-+#endif
-   {
-     psock_errno("socket()");
-     free(cBuffer);
-@@ -818,10 +831,15 @@
-   setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
-   setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
- 
-+#ifdef USE_IPV6
-+  sa_server.sin6_family = AF_INET6;
-+  sa_server.sin6_port = htons(nPort);
-+  sa_server.sin6_addr = addr_local;
-+#else
-   sa_server.sin_family = AF_INET;
-   sa_server.sin_port = htons(nPort);
-   sa_server.sin_addr = addr_local;
--
-+#endif
-   if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
-   {
-     psock_errno("bind()");
-@@ -958,7 +976,11 @@
-   long nTime, nResult;
-   long long nData;
-   int i;
-+#ifdef USE_IPV6
-+  struct sockaddr_in6 sa_server;
-+#else
-   struct sockaddr_in sa_server;
-+#endif
-   int server;
-   int rc;
-   int nByte;
-@@ -969,7 +991,11 @@
-     return;
-   }
- 
-+#ifdef USE_IPV6
-+  if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
-+#else
-   if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
-+#endif
-   {
-     psock_errno("socket()");
-     free(cBuffer);
-@@ -979,9 +1005,16 @@
-   setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
-   setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
- 
-+#ifdef USE_IPV6
-+  sa_server.sin6_family = AF_INET6;
-+  sa_server.sin6_port = htons(nPort);
-+  sa_server.sin6_addr = addr_server;
-+
-+#else
-   sa_server.sin_family = AF_INET;
-   sa_server.sin_port = htons(nPort);
-   sa_server.sin_addr = addr_server;
-+#endif
- 
-   if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
-   {
-@@ -1121,7 +1154,11 @@
- THREAD UDP_Receiver(void *arg)
- {
-   char *cBuffer;
-+#ifdef USE_IPV6
-+  struct sockaddr_in6 sa_server, sa_client;
-+#else
-   struct sockaddr_in sa_server, sa_client;
-+#endif
-   int rc;
-   size_t nBytes;
- 
-@@ -1131,7 +1168,11 @@
-     return THREADRESULT;
-   }
- 
-+#ifdef USE_IPV6
-+  if ((udpsocket = socket(PF_INET6, SOCK_DGRAM, 0)) < 0)
-+#else
-   if ((udpsocket = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
-+#endif
-   {
-     psock_errno("socket(DGRAM)");
-     free(cBuffer);
-@@ -1141,9 +1182,15 @@
-   setsockopt(udpsocket, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
-   setsockopt(udpsocket, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
- 
-+#ifdef USE_IPV6
-+  sa_server.sin6_family = AF_INET6;
-+  sa_server.sin6_port = htons(nAuxPort);
-+  sa_server.sin6_addr = addr_local;
-+#else
-   sa_server.sin_family = AF_INET;
-   sa_server.sin_port = htons(nAuxPort);
-   sa_server.sin_addr = addr_local;
-+#endif
- 
-   if (bind(udpsocket, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
-   {
-@@ -1181,7 +1228,11 @@
-   char *cBuffer;
-   CONTROL ctl;
-   long long nData;
-+#ifdef USE_IPV6
-+  struct sockaddr_in6 sa_server, sa_client;
-+#else
-   struct sockaddr_in sa_server, sa_client;
-+#endif
-   int server, client;
-   struct timeval tv;
-   fd_set fds;
-@@ -1194,7 +1245,11 @@
-     return THREADRESULT;
-   }
- 
-+#ifdef USE_IPV6
-+  if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
-+#else
-   if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
-+#endif
-   {
-     psock_errno("socket(STREAM)");
-     free(cBuffer);
-@@ -1204,9 +1259,15 @@
-   setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
-   setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
- 
-+#ifdef USE_IPV6
-+  sa_server.sin6_family = AF_INET6;
-+  sa_server.sin6_port = htons(nAuxPort);
-+  sa_server.sin6_addr = addr_local;
-+#else
-   sa_server.sin_family = AF_INET;
-   sa_server.sin_port = htons(nAuxPort);
-   sa_server.sin_addr = addr_local;
-+#endif
- 
-   if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
-   {
-@@ -1252,7 +1313,11 @@
-     printf("UDP connection established ... ");
-     fflush(stdout);
- 
-+#ifdef USE_IPV6
-+    sa_client.sin6_port = htons(nAuxPort);
-+#else
-     sa_client.sin_port = htons(nAuxPort);
-+#endif
- 
-     for (;;)
-     {
-@@ -1345,7 +1410,11 @@
-   long nTime, nResult, nCount;
-   long long nData;
-   int i;
-+#ifdef USE_IPV6
-+  struct sockaddr_in6 sa_server;
-+#else
-   struct sockaddr_in sa_server;
-+#endif
-   int server;
-   int rc, nByte;
- 
-@@ -1355,7 +1424,11 @@
-     return;
-   }
- 
-+#ifdef USE_IPV6
-+  if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
-+#else
-   if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
-+#endif
-   {
-     psock_errno("socket()");
-     free(cBuffer);
-@@ -1365,9 +1438,15 @@
-   setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
-   setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
- 
-+#ifdef USE_IPV6
-+  sa_server.sin6_family = AF_INET6;
-+  sa_server.sin6_port = htons(nAuxPort);
-+  sa_server.sin6_addr = addr_server;
-+#else
-   sa_server.sin_family = AF_INET;
-   sa_server.sin_port = htons(nAuxPort);
-   sa_server.sin_addr = addr_server;
-+#endif
- 
-   if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
-   {
-@@ -1669,17 +1748,29 @@
-       return psock_errno("sock_init()"), 1;
- 
-     if (szLocal == 0)
-+#ifdef USE_IPV6
-+      addr_local = in6addr_any;
-+#else
-       addr_local.s_addr = INADDR_ANY;
-+#endif
-     else
-     {
-       if (isdigit(*szLocal))
-+#ifdef USE_IPV6
-+	inet_pton(AF_INET6, szLocal, &addr_local);
-+#else
- 	addr_local.s_addr = inet_addr(szLocal);
-+#endif
-       else
-       {
- 	if ((host = gethostbyname(szLocal)) == NULL)
- 	  return psock_errno("gethostbyname()"), 1;
- 
-+#ifdef USE_IPV6
-+	addr_local = * (struct in6_addr *) (host->h_addr);
-+#else
- 	addr_local = * (struct in_addr *) (host->h_addr);
-+#endif
-       }
-     }
- 
-@@ -1689,13 +1780,21 @@
- 	usage();
- 
-       if (isdigit(*argv[optind]))
-+#ifdef USE_IPV6
-+	inet_pton(AF_INET6, argv[optind], &addr_server);
-+#else
- 	addr_server.s_addr = inet_addr(argv[optind]);
-+#endif
-       else
-       {
- 	if ((host = gethostbyname(argv[optind])) == NULL)
- 	  return psock_errno("gethostbyname()"), 1;
- 
-+#ifdef USE_IPV6
-+	addr_server = * (struct in6_addr *) (host->h_addr);
-+#else
- 	addr_server = * (struct in_addr *) (host->h_addr);
-+#endif
-       }
-     }
-   }
+--- netio.c.orig	2015-03-22 18:03:25.739744000 +0100
++++ netio.c	2015-03-22 18:03:36.459543000 +0100
+@@ -1,1505 +1,1618 @@
+-/* netio.c
+- *
+- * Author:  Kai-Uwe Rommel <rommel@ars.de>
+- * Created: Wed Sep 25 1996
+- */
+-
+-static char *rcsid =
+-"$Id: netio.c,v 1.32 2012/11/22 16:47:24 Rommel Exp Rommel $";
+-static char *rcsrev = "$Revision: 1.32 $";
+-
+-/*
+- * $Log: netio.c,v $
+- * Revision 1.32  2012/11/22 16:47:24  Rommel
+- * added binding to client sockets, too
+- *
+- * Revision 1.31  2010/10/14 16:44:38  Rommel
+- * fixed sleep calls
+- *
+- * Revision 1.30  2010/10/14 14:32:41  Rommel
+- * removed NetBIOS code
+- * added server side result printing
+- * fixed packet loss calculation (data type bug)
+- *
+- * Revision 1.29  2010/10/14 11:28:19  Rommel
+- * central printing routine
+- *
+- * Revision 1.28  2009/09/07 14:09:39  Rommel
+- * changed number output from bytes/KB to bytes/KB/MB
+- *
+- * Revision 1.27  2008/02/11 09:00:22  Rommel
+- * re-randomize buffer data for each loop run
+- *
+- * Revision 1.26  2005/08/30 14:45:51  Rommel
+- * minor fixes
+- *
+- * Revision 1.25  2004/05/26 07:23:04  Rommel
+- * some more corrections from Oliver Lau and Frank Schnell
+- *
+- * Revision 1.24  2004/05/17 16:01:03  Rommel
+- * fix for _send/_recv from Thomas Jahns
+- *
+- * Revision 1.23  2003/09/30 09:32:22  Rommel
+- * corrections from Matthias Scheler for error handling
+- * added socket buffer size setting
+- * added htonl/ntohl code (hint from Oliver Lau)
+- * restructured send/recv error/result checking
+- * more verbose server side messages
+- * other minor changes
+- *
+- * Revision 1.22  2003/09/22 14:58:33  Rommel
+- * added server side progress messages
+- *
+- * Revision 1.21  2003/08/28 12:44:11  Rommel
+- * fixed display of non-k-multiple packet sizes
+- *
+- * Revision 1.20  2003/08/27 11:05:48  Rommel
+- * allow block size specifikation in bytes or k bytes
+- *
+- * Revision 1.19  2003/08/17 16:53:45  Rommel
+- * added Unix/Linux pthreads support (required for UDP)
+- *
+- * Revision 1.18  2003/08/17 14:46:17  Rommel
+- * added UDP benchmark
+- * several minor changes (cleanup)
+- * configurable binding address
+- *
+- * Revision 1.17  2003/07/12 17:25:00  Rommel
+- * made block size selectable
+- *
+- * Revision 1.16  2003/02/10 09:06:59  Rommel
+- * fixed sender algorithm
+- *
+- * Revision 1.15  2001/09/17 13:56:40  Rommel
+- * changed to perform bidirectional benchmarks
+- *
+- * Revision 1.14  2001/04/19 12:20:55  Rommel
+- * added fixes for Unix systems
+- *
+- * Revision 1.13  2001/03/26 11:37:41  Rommel
+- * avoid integer overflows during throughput calculation
+- *
+- * Revision 1.12  2000/12/01 15:57:57  Rommel
+- * *** empty log message ***
+- *
+- * Revision 1.11  2000/03/01 12:21:47  rommel
+- * fixed _INTEGRAL_MAX_BITS problem for WIN32
+- *
+- * Revision 1.10  1999/10/28 17:36:57  rommel
+- * fixed OS/2 timer code
+- *
+- * Revision 1.9  1999/10/28 17:04:12  rommel
+- * fixed timer code
+- *
+- * Revision 1.8  1999/10/24 19:08:20  rommel
+- * imported DOS support from G. Vanem <giva@bgnett.no>
+- *
+- *
+- * Revision 1.8  1999/10/12 11:02:00  giva
+- * added Watt-32 with djgpp support. Added debug mode.
+- * G. Vanem <giva@bgnett.no>
+- *
+- * Revision 1.7  1999/06/13 18:42:25  rommel
+- * added Linux port with patches from Detlef Plotzky <plo@bvu.de>
+- *
+- * Revision 1.6  1998/10/12 11:14:58  rommel
+- * change to malloc'ed (and tiled) memory for transfer buffers
+- * (hint from Guenter Kukkukk <kukuk@berlin.snafu.de>)
+- * for increased performance
+- *
+- * Revision 1.5  1998/07/31 14:15:03  rommel
+- * added random buffer data
+- * fixed bugs
+- *
+- * Revision 1.4  1997/09/12 17:35:04  rommel
+- * termination bug fixes
+- *
+- * Revision 1.3  1997/09/12 12:00:15  rommel
+- * added Win32 port
+- * (tested for Windows NT only)
+- *
+- * Revision 1.2  1997/09/12 10:44:22  rommel
+- * added TCP/IP and a command line interface
+- *
+- * Revision 1.1  1996/09/25 08:42:29  rommel
+- * Initial revision
+- *
+- */
+-
+-#ifdef WIN32
+-#define _INTEGRAL_MAX_BITS 64
+-#endif
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <signal.h>
+-#if defined(UNIX) || defined(DJGPP)
+-#include <sys/time.h>
+-#include <unistd.h>
+-#include <errno.h>
+-#else
+-#include <process.h>
+-#include "getopt.h"
+-#endif
+-
+-#define DEFAULTPORT 0x494F /* "IO" */
+-#define DEFAULTNBSRV "NETIOSRV"
+-#define DEFAULTNBCLT "NETIOCLT"
+-#define THREADSTACK 65536
+-
+-/* TCP/IP system specific details */
+-
+-#ifdef OS2
+-
+-#define BSD_SELECT
+-#include <types.h>
+-#include <netinet/in.h>
+-#include <sys/select.h>
+-#include <sys/socket.h>
+-#include <sys/time.h>
+-#include <netdb.h>
+-
+-#ifdef __IBMC__
+-#define newthread(entry) (_beginthread(entry, 0, THREADSTACK, 0) == -1)
+-#else
+-#define newthread(entry) (_beginthread(entry, THREADSTACK, 0) == -1)
+-#endif
+-#define THREAD void
+-#define THREADRESULT 
+-
+-#endif /* OS2 */
+-
+-#ifdef WATT32
+-
+-#include <tcp.h>       /* sock_init() etc. */
+-#include <netinet/in.h>
+-#include <sys/socket.h>
+-#include <netdb.h>
+-#define soclose     close_s
+-#define select      select_s
+-#define psock_errno perror
+-
+-#endif /* WATT32 */
+-
+-#ifdef WIN32
+-
+-#include <windows.h>
+-#include <winsock.h>
+-#define soclose closesocket
+-
+-int sock_init(void)
+-{
+-  WSADATA wsaData;
+-  return WSAStartup(MAKEWORD(1, 1), &wsaData);
+-}
+-
+-void psock_errno(char *text)
+-{
+-  int rc = WSAGetLastError();
+-  printf("%s: error code %d\n", text, rc);
+-}
+-
+-#ifdef __IBMC__
+-#define newthread(entry) (_beginthread(entry, 0, THREADSTACK, 0) == -1)
+-#else
+-#define newthread(entry) (_beginthread(entry, THREADSTACK, 0) == -1)
+-#endif
+-#define THREAD void
+-#define THREADRESULT 
+-
+-#endif /* WIN32 */
+-
+-#ifdef UNIX
+-
+-#include <sys/types.h>
+-#include <sys/socket.h>
+-#include <sys/time.h>
+-#include <time.h>
+-#include <netinet/in.h>
+-#include <netdb.h>
+-
+-#define psock_errno(x) perror(x)
+-#define soclose(x) close(x)
+-
+-int sock_init(void)
+-{
+-  return 0;
+-}
+-
+-#include <pthread.h>
+-pthread_t thread;
+-#define newthread(entry) (pthread_create(&thread, 0, entry, 0) != 0)
+-#define THREAD void*
+-#define THREADRESULT ((void*)0)
+-
+-#endif /* UNIX */
+-
+-#ifdef SOCKLEN_T
+-typedef socklen_t socklen_type;
+-#else
+-typedef size_t socklen_type;
+-#endif
+-
+-/* global data */
+-
+-#ifndef max
+-#define max(x, y) ((x) > (y) ? (x) : (y))
+-#endif
+-
+-#ifndef min
+-#define min(x, y) ((x) < (y) ? (x) : (y))
+-#endif
+-
+-#ifndef EINTR
+-#define EINTR 0
+-#endif
+-
+-int nSizes[] = {1024, 2048, 4096, 8192, 16384, 32768};
+-size_t nnSizes = sizeof(nSizes) / sizeof(int);
+-#define NMAXSIZE 65536
+-
+-int tSizes[] = {1024, 2048, 4096, 8192, 16384, 32767};
+-size_t ntSizes = sizeof(tSizes) / sizeof(int);
+-#define TMAXSIZE 65536
+-
+-#define INTERVAL 6
+-
+-/* you may need to adapt this to your platform/compiler */
+-typedef unsigned int uint32;
+-
+-typedef struct
+-{
+-  uint32 cmd;
+-  uint32 data;
+-}
+-CONTROL;
+-
+-#define CMD_QUIT  0
+-#define CMD_C2S   1
+-#define CMD_S2C   2
+-#define CMD_RES   3
+-
+-#define CTLSIZE sizeof(CONTROL)
+-
+-/* timer code */
+-
+-int bTimeOver;
+-
+-#ifdef OS2
+-
+-#define INCL_DOS
+-#define INCL_NOPM
+-#include <os2.h>
+-
+-typedef QWORD TIMER;
+-
+-void APIENTRY TimerThread(ULONG nSeconds)
+-{
+-  HEV hSem;
+-  HTIMER hTimer;
+-
+-  DosCreateEventSem(0, &hSem, DC_SEM_SHARED, 0);
+-
+-  DosAsyncTimer(nSeconds * 1000, (HSEM) hSem, &hTimer);
+-  DosWaitEventSem(hSem, SEM_INDEFINITE_WAIT);
+-  DosStopTimer(hTimer);
+-
+-  DosCloseEventSem(hSem);
+-
+-  bTimeOver = 1;
+-
+-  DosExit(EXIT_THREAD, 0);
+-}
+-
+-int StartAlarm(long nSeconds)
+-{
+-  TID ttid;
+-
+-  bTimeOver = 0;
+-
+-  if (DosCreateThread(&ttid, TimerThread, nSeconds, 0, THREADSTACK))
+-    return printf("Cannot create timer thread.\n"), -1;
+-
+-  return 0;
+-}
+-
+-int StartTimer(TIMER *nStart)
+-{
+-  if (DosTmrQueryTime(nStart))
+-    return printf("Timer error.\n"), -1;
+-
+-  return 0;
+-}
+-
+-long StopTimer(TIMER *nStart, int nAccuracy)
+-{
+-  TIMER nStop;
+-  ULONG nFreq;
+-
+-  if (DosTmrQueryTime(&nStop))
+-    return printf("Timer error.\n"), -1;
+-  if (DosTmrQueryFreq(&nFreq))
+-    return printf("Timer error.\n"), -1;
+-
+-  nFreq = (nFreq + nAccuracy / 2) / nAccuracy;
+-
+-  return (* (long long *) &nStop - * (long long *) nStart) / nFreq;
+-}
+-
+-#endif /* OS2 */
+-
+-#ifdef WIN32
+-
+-typedef LARGE_INTEGER TIMER;
+-
+-#define sleep(x) Sleep((x) * 1000);
+-
+-DWORD CALLBACK TimerThread(void *pArg)
+-{
+-  long nSeconds = * (long *) pArg;
+-
+-  Sleep(nSeconds * 1000);
+-  bTimeOver = 1;
+-
+-  return 0;
+-}
+-
+-int StartAlarm(long nSeconds)
+-{
+-  static long sSeconds;
+-  DWORD ttid;
+-
+-  sSeconds = nSeconds;
+-
+-  bTimeOver = 0;
+-
+-  if (CreateThread(0, THREADSTACK, TimerThread, (void *) &sSeconds, 0, &ttid) == NULL)
+-    return printf("Cannot create timer thread.\n"), -1;
+-
+-  return 0;
+-}
+-
+-int StartTimer(TIMER *nStart)
+-{
+-  if (!QueryPerformanceCounter(nStart))
+-    return printf("Timer error.\n"), -1;
+-
+-  return 0;
+-}
+-
+-long StopTimer(TIMER *nStart, int nAccuracy)
+-{
+-  TIMER nStop, nFreq;
+-
+-  if (!QueryPerformanceCounter(&nStop))
+-    return printf("Timer error.\n"), -1;
+-  if (!QueryPerformanceFrequency(&nFreq))
+-    return printf("Timer error.\n"), -1;
+-
+-  nFreq.QuadPart = (nFreq.QuadPart + nAccuracy / 2) / nAccuracy;
+-
+-  return (nStop.QuadPart - nStart->QuadPart) / nFreq.QuadPart;
+-}
+-
+-#endif /* WIN32 */
+-
+-#if defined(UNIX) || defined(DJGPP)
+-
+-typedef struct timeval TIMER;
+-
+-void on_alarm(int signum)
+-{
+-  alarm(0);
+-  bTimeOver = 1;
+-}
+-
+-int StartAlarm(long nSeconds)
+-{
+-  bTimeOver = 0;
+-  signal(SIGALRM, on_alarm);
+-  alarm(nSeconds);
+-  return 0;
+-}
+-
+-int StartTimer(TIMER *nStart)
+-{
+-  struct timezone tz = {0, 0};
+-
+-  gettimeofday(nStart, &tz);
+-
+-  return 0;
+-}
+-
+-long StopTimer(TIMER *nStart, int nAccuracy)
+-{
+-  struct timezone tz = {0, 0};
+-  TIMER nStop;
+-
+-  gettimeofday(&nStop, &tz);
+-
+-  return (nStop.tv_sec - nStart->tv_sec) * nAccuracy
+-       + (nStop.tv_usec - nStart->tv_usec) * nAccuracy / 1000000;
+-}
+-
+-#endif /* UNIX || DJGPP */
+-
+-/* initialize data to transfer */
+-
+-void GenerateRandomData(char *cBuffer, size_t nSize)
+-{
+-  if (cBuffer != NULL)
+-  {
+-    size_t i;
+- 
+-    cBuffer[0] = 0;
+-    srand(time(NULL));
+- 
+-    for (i = 1; i < nSize; i++)
+-      cBuffer[i] = (char) rand();
+-  }
+-}
+- 
+-char *InitBuffer(size_t nSize)
+-{
+- char *cBuffer = malloc(nSize); 
+- GenerateRandomData(cBuffer, nSize); 
+- return cBuffer;
+-}
+-
+-char *PacketSize(int nSize)
+-{
+-  static char szBuffer[64];
+-
+-  if ((nSize % 1024) == 0 || (nSize % 1024) == 1023)
+-    sprintf(szBuffer, "%2dk", (nSize + 512) / 1024);
+-  else
+-    sprintf(szBuffer, "%d", nSize);
+-
+-  return szBuffer;
+-}
+-
+-/* print results */
+-
+-typedef enum {nf_auto, nf_bytes, nf_kbytes, nf_mbytes, nf_gbytes} numberformat;
+-numberformat nFormat = nf_auto;
+-
+-void print_result(long long nData, long nTime)
+-{
+-  numberformat nThisFormat = nFormat;
+-  double nResult;
+-  
+-  if (nThisFormat == nf_auto)
+-  {
+-    if (nData < 10 * 1024 * INTERVAL)
+-      nThisFormat = nf_bytes;
+-    else if (nData < 10 * 1024 * 1024 * INTERVAL)
+-      nThisFormat = nf_kbytes;
+-    else if (nData < (long long) 1024 * 1024 * 1024 * INTERVAL)
+-      nThisFormat = nf_mbytes;
+-    else
+-      nThisFormat = nf_gbytes;
+-  }
+-
+-  switch(nThisFormat)
+-  {
+-  case nf_bytes:
+-    nResult = (double) nData * 1024 / nTime;
+-    printf(" %0.0f Byte/s", nResult);
+-    break;
+-
+-  case nf_kbytes:
+-    nResult = (double) nData / nTime;
+-    printf(" %0.2f KByte/s", nResult);
+-    break;
+-
+-  case nf_mbytes:
+-    nResult = (double) nData / nTime / 1024;
+-    printf(" %0.2f MByte/s", nResult);
+-    break;
+-
+-  case nf_gbytes:
+-    nResult = (double) nData / nTime / 1024 / 1024;
+-    printf(" %0.3f GByte/s", nResult);
+-    break;
+-  }
+-}
+-
+-/* TCP/IP code */
+-
+-int send_data(int socket, void *buffer, size_t size, int flags)
+-{
+-  int rc = send(socket, buffer, size, flags);
+-
+-  if (rc < 0)
+-  {
+-    psock_errno("send()");
+-    return -1;
+-  }
+-
+-  if (rc != size)
+-    return 1;
+-
+-  return 0;
+-}
+-
+-int recv_data(int socket, void *buffer, size_t size, int flags)
+-{
+-  size_t rc = recv(socket, buffer, size, flags);
+-
+-  if (rc < 0)
+-  {
+-    psock_errno("recv()");
+-    return -1;
+-  }
+-
+-  if (rc != size)
+-    return 1;
+-
+-  return 0;
+-}
+-
+-const int sobufsize = 131072;
+-int nPort = DEFAULTPORT;
+-int nAuxPort = DEFAULTPORT + 1;
+-struct in_addr addr_server;
+-struct in_addr addr_local;
+-
+-int udpsocket, udpd;
+-unsigned long nUDPCount;
+-long long nUDPData;
+-
+-THREAD TCP_Server(void *arg)
+-{
+-  char *cBuffer;
+-  CONTROL ctl;
+-  TIMER nTimer;
+-  long nTime;
+-  long long nData;
+-  struct sockaddr_in sa_server, sa_client;
+-  int server, client;
+-  socklen_type length;
+-  struct timeval tv;
+-  fd_set fds;
+-  int rc;
+-  int nByte;
+-
+-  if ((cBuffer = InitBuffer(TMAXSIZE)) == NULL)
+-  {
+-    perror("malloc()");
+-    return THREADRESULT;
+-  }
+-
+-  if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
+-  {
+-    psock_errno("socket()");
+-    free(cBuffer);
+-    return THREADRESULT;
+-  }
+-
+-  setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
+-  setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
+-
+-  sa_server.sin_family = AF_INET;
+-  sa_server.sin_port = htons(nPort);
+-  sa_server.sin_addr = addr_local;
+-
+-  if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
+-  {
+-    psock_errno("bind()");
+-    soclose(server);
+-    free(cBuffer);
+-    return THREADRESULT;
+-  }
+-
+-  if (listen(server, 2) != 0)
+-  {
+-    psock_errno("listen()");
+-    soclose(server);
+-    free(cBuffer);
+-    return THREADRESULT;
+-  }
+-
+-  for (;;)
+-  {
+-    printf("TCP server listening.\n");
+-
+-    FD_ZERO(&fds);
+-    FD_SET(server, &fds);
+-    tv.tv_sec  = 3600;
+-    tv.tv_usec = 0;
+-
+-    if ((rc = select(FD_SETSIZE, &fds, 0, 0, &tv)) < 0)
+-    {
+-      psock_errno("select()");
+-      break;
+-    }
+-
+-    if (rc == 0 || FD_ISSET(server, &fds) == 0)
+-      continue;
+-
+-    length = sizeof(sa_client);
+-    if ((client = accept(server, (struct sockaddr *) &sa_client, &length)) == -1)
+-      continue;
+-
+-    setsockopt(client, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
+-    setsockopt(client, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
+-
+-    printf("TCP connection established ... ");
+-    fflush(stdout);
+-
+-    for (;;)
+-    {
+-      if (recv_data(client, (void *) &ctl, CTLSIZE, 0))
+-	break;
+-
+-      ctl.cmd = ntohl(ctl.cmd);
+-      ctl.data = ntohl(ctl.data);
+-
+-      if (ctl.cmd == CMD_C2S)
+-      {
+-	StartTimer(&nTimer);
+-
+-	printf("\nReceiving from client, packet size %s ... ", PacketSize(ctl.data));
+-	nData = 0;
+-
+-	do
+-	{
+-	  for (nByte = 0; nByte < ctl.data; )
+-	  {
+-	    rc = recv(client, cBuffer + nByte, ctl.data - nByte, 0);
+-
+-	    if (rc < 0 && errno != EINTR)
+-	    {
+-	      psock_errno("recv()");
+-	      break;
+-	    }
+-	    
+-	    if (rc > 0)
+-	      nByte += rc;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503221728.t2MHSSGm010085>