|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 3947 (0xf6b) Types: TextFile Names: »fstime.c«
└─⟦db229ac7e⟧ Bits:30007240 EUUGD20: SSBA 1.2 / AFW Benchmarks └─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21E/musbus/fstime.c« └─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21F/musbus/fstime.c«
/* * $Header: fstime.c,v 5.2 87/12/09 14:48:05 kenj Exp $ */ #include <stdio.h> #include "musbus.h" #include <sys/types.h> #ifdef SysV #include <sys/times.h> long times(); #ifdef interdata #define HZ tbuffer.tms_cfreq #endif #endif #ifdef BSD4v1 #include <sys/timeb.h> #endif #ifdef BSD4v2 #include <sys/time.h> #endif #define NKBYTE 20 char buf[BUFSIZ]; main(argc, argv) char **argv; { int n = NKBYTE; int nblock; char *fname; int f; int g; int i; int xfer, t; long then; char *mktemp(); #ifdef BSD4v1 struct timeb tbuf; int msec; #endif #ifdef BSD4v2 struct timeval tval; struct timezone tzone; long usec; #endif #ifdef SysV struct tms tbuffer; #endif if (argc > 1) n = atoi(argv[1]); nblock = (n * 1024) / BUFSIZ; if (argc == 3 && chdir(argv[2]) != -1) { } fname = mktemp("fstXXXXXX"); close(creat(fname, 0600)); if ((f = open(fname, 2)) == -1) { fprintf(stderr, "fstime: open file #1 \"%s\" failed!\n", fname); exit(1); } unlink(fname); close(creat(fname, 0600)); if ((g = open(fname, 2)) == -1) { fprintf(stderr, "fstime: open file #2 \"%s\" failed!\n", fname); exit(1); } unlink(fname); for (i = 0; i < sizeof(buf); i++) buf[i] = i & 0177; #ifdef SysV then = times(&tbuffer); #else #ifdef BSD4v1 ftime(&tbuf); then = tbuf.time; msec = tbuf.millitm; #else #ifdef BSD4v2 gettimeofday(&tval, &tzone); then = tval.tv_sec; usec = tval.tv_usec; #else What sort of Unix system if this? #endif #endif #endif for (i = 0; i < nblock; i++) { if (write(f, buf, sizeof(buf)) != sizeof(buf)) { perror("fstime: write"); exit(1); } } #ifdef SysV t = 1000*(times(&tbuffer) - then)/HZ; #endif #ifdef BSD4v1 ftime(&tbuf); t = (tbuf.time - then)*1000 + tbuf.millitm - msec; #endif #ifdef BSD4v2 gettimeofday(&tval, &tzone); t = (tval.tv_sec - then)*1000 + (tval.tv_usec - usec)/1000; #endif if (t > 0) { xfer = nblock * sizeof(buf) * 1000 / t; } #if awk fprintf(stderr, "%.2f", t > 0 ? (float)xfer/1024 : 0); #endif sync(); sleep(5); sync(); lseek(f, 0L, 0); #ifdef SysV then = times(&tbuffer); #endif #ifdef BSD4v1 times(&tbuf); then = tbuf.time; msec = tbuf.millitm; #endif #ifdef BSD4v2 gettimeofday(&tval, &tzone); then = tval.tv_sec; usec = tval.tv_usec; #endif for (i = 0; i < nblock; i++) { if (read(f, buf, sizeof(buf)) != sizeof(buf)) { perror("fstime: read"); exit(1); } } #ifdef SysV t = 1000*(times(&tbuffer) - then)/HZ; #endif #ifdef BSD4v1 ftime(&tbuf); t = (tbuf.time - then)*1000 + tbuf.millitm - msec; #endif #ifdef BSD4v2 gettimeofday(&tval, &tzone); t = (tval.tv_sec - then)*1000 + (tval.tv_usec - usec)/1000; #endif if (t > 0) { xfer = nblock * sizeof(buf) * 1000 / t; } #if awk fprintf(stderr, " %.2f", t > 0 ? (float)xfer/1024 : 0); #endif sync(); sleep(5); sync(); lseek(f, 0L, 0); #ifdef SysV then = times(&tbuffer); #endif #ifdef BSD4v1 times(&tbuf); then = tbuf.time; msec = tbuf.millitm; #endif #ifdef BSD4v2 gettimeofday(&tval, &tzone); then = tval.tv_sec; usec = tval.tv_usec; #endif for (i = 0; i < nblock; i++) { if (read(f, buf, sizeof(buf)) != sizeof(buf)) { perror("fstime: copy-read"); exit(1); } if (write(g, buf, sizeof(buf)) != sizeof(buf)) { perror("fstime: copy-write"); exit(1); } } #ifdef SysV t = 1000*(times(&tbuffer) - then)/HZ; #endif #ifdef BSD4v1 ftime(&tbuf); t = (tbuf.time - then)*1000 + tbuf.millitm - msec; #endif #ifdef BSD4v2 gettimeofday(&tval, &tzone); t = (tval.tv_sec - then)*1000 + (tval.tv_usec - usec)/1000; #endif if (t > 0) { xfer = nblock * sizeof(buf) * 1000 / t; } #if awk fprintf(stderr, " %.2f\n", t > 0 ? (float)xfer/1024 : 0); #endif exit(0); }