From: Stephen Hemminger Date: Thu, 15 Jun 2006 23:22:09 +0000 (-0700) Subject: Added stats utility from netem X-Git-Tag: v2.6.19-061214~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebfd0f310306f10b96d7a9f7244f6a9b45b797e8;p=thirdparty%2Fiproute2.git Added stats utility from netem --- diff --git a/netem/Makefile b/netem/Makefile index 59c7e0837..3732160d9 100644 --- a/netem/Makefile +++ b/netem/Makefile @@ -15,6 +15,9 @@ $(DISTGEN): experimental.dist: maketable experimental.dat ./maketable experimental.dat > experimental.dist +stats: stats.c + $(HOSTCC) $(CCOPTS) -I../include -o $@ $@.c -lm + install: all mkdir -p $(DESTDIR)/usr/lib/tc for i in $(DISTDATA); \ diff --git a/netem/maketable.c b/netem/maketable.c index ce0917684..dccd25462 100644 --- a/netem/maketable.c +++ b/netem/maketable.c @@ -1,8 +1,8 @@ /* * Experimental data distribution table generator - * Taken from the uncopyrighted NISTnet code. + * Taken from the uncopyrighted NISTnet code (public domain). * - * Rread in a series of "random" data values, either + * Read in a series of "random" data values, either * experimentally or generated from some probability distribution. * From this, create the inverse distribution table used to approximate * the distribution. diff --git a/netem/stats.c b/netem/stats.c new file mode 100644 index 000000000..ed70f1676 --- /dev/null +++ b/netem/stats.c @@ -0,0 +1,77 @@ +/* + * Experimental data distribution table generator + * Taken from the uncopyrighted NISTnet code (public domain). + * + * Rread in a series of "random" data values, either + * experimentally or generated from some probability distribution. + * From this, report statistics. + */ + +#include +#include +#include +#include +#include +#include + +void +stats(FILE *fp) +{ + struct stat info; + double *x; + int limit; + int n=0, i; + double mu=0.0, sigma=0.0, sumsquare=0.0, sum=0.0, top=0.0, rho=0.0; + double sigma2=0.0; + + fstat(fileno(fp), &info); + if (info.st_size > 0) { + limit = 2*info.st_size/sizeof(double); /* @@ approximate */ + } else { + limit = 10000; + } + x = (double *)malloc(limit*sizeof(double)); + + for (i=0; i 1) { + fp = fopen(argv[1], "r"); + if (!fp) { + perror(argv[1]); + exit(1); + } + } else { + fp = stdin; + } + stats(fp); + return 0; +}