⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9ping.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>typedef uvlong u64int;#define TWID64	((u64int)~(u64int)0)u64intunittoull(char *s){	char *es;	u64int n;	if(s == nil)		return TWID64;	n = strtoul(s, &es, 0);	if(*es == 'k' || *es == 'K'){		n *= 1024;		es++;	}else if(*es == 'm' || *es == 'M'){		n *= 1024*1024;		es++;	}else if(*es == 'g' || *es == 'G'){		n *= 1024*1024*1024;		es++;	}	if(*es != '\0')		return TWID64;	return n;}voidmain(int argc, char *argv[]){	int fd, i;	int n = 1000, m;	int s = 1;	double *t, t0, t1;	uchar *buf;		double a, d, max, min;	m = OREAD;	ARGBEGIN{	case 'n':		n = atoi(ARGF());		break;	case 's':		s = unittoull(ARGF());		if(s < 1 || s > 1024*1024)			sysfatal("bad size");		break;	case 'r':		m = OREAD;		break;	case 'w':		m = OWRITE;		break;	}ARGEND	fd = 0;	if(argc == 1){		fd = open(argv[0], m);		if(fd < 0)			sysfatal("could not open file: %s: %r", argv[0]);	}	buf = malloc(s);	t = malloc(n*sizeof(double));		t0 = nsec();	for(i=0; i<n; i++){		if(m == OREAD){			if(pread(fd, buf, s, 0) < s)				sysfatal("bad read: %r");		}else{			if(pwrite(fd, buf, s, 0) < s)				sysfatal("bad write: %r");		}		t1 = nsec();		t[i] = (t1 - t0)*1e-3;		t0 = t1;	}	a = 0.;	d = 0.;	max = 0.;	min = 1e12;	for(i=0; i<n; i++){		a += t[i];		if(max < t[i])			max = t[i];		if(min > t[i])			min = t[i];	}	a /= n;		for(i=0; i<n; i++)		d += (a - t[i]) * (a - t[i]);	d /= n;	d = sqrt(d);	print("avg = %.0fµs min = %.0fµs max = %.0fµs dev = %.0fµs\n", a, min, max, d);	exits(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -