diff --git a/netem/Makefile b/netem/Makefile index 59c7e083..3732160d 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 ce091768..dccd2546 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 00000000..ed70f167 --- /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; +}