Index: head/benchmarks/interbench/Makefile =================================================================== --- head/benchmarks/interbench/Makefile (revision 401949) +++ head/benchmarks/interbench/Makefile (revision 401950) @@ -1,39 +1,42 @@ # Created by: Alexey Dokuchaev # $FreeBSD$ PORTNAME= interbench -DISTVERSION= 0.31 +PORTVERSION= 0.31 +PORTREVISION= 1 CATEGORIES= benchmarks MASTER_SITES= http://ck.kolivas.org/apps/${PORTNAME}/ MAINTAINER= danfe@FreeBSD.org COMMENT= Interactivity benchmark for Unix-like systems LICENSE= GPLv2 -USES= tar:bzip2 gmake +USES= gmake tar:bzip2 MAKE_ARGS= CC="${CC}" CFLAGS="${CFLAGS}" ALL_TARGET= ${PORTNAME} PLIST_FILES= bin/${PORTNAME} man/man8/${PORTNAME}.8.gz PORTDOCS= readme readme.interactivity OPTIONS_DEFINE= DOCS post-patch: # Do not confuse the reader that this program is Linux-specific @${REINPLACE_CMD} -e '/kernel/!s,Linux,Unix-like systems, ; \ /kernel/s,Linux,the,' ${WRKSRC}/${PORTNAME}.8 pre-build: # Remove stale Linuxish object files and binaries; setting ALL_TARGET to # "clean ${PORTNAME}" turned out to be racy and breaking parallel builds ${MAKE} -C ${BUILD_WRKSRC} clean do-install: ${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin ${INSTALL_MAN} ${WRKSRC}/${PORTNAME}.8 ${STAGEDIR}${MANPREFIX}/man/man8 + +do-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${PORTDOCS:S,^,${WRKSRC}/,} ${STAGEDIR}${DOCSDIR} .include Index: head/benchmarks/interbench/files/patch-interbench.c =================================================================== --- head/benchmarks/interbench/files/patch-interbench.c (revision 401949) +++ head/benchmarks/interbench/files/patch-interbench.c (revision 401950) @@ -1,65 +1,91 @@ ---- interbench.c.orig 2009-10-31 12:14:59.000000000 +0800 -+++ interbench.c 2013-03-11 20:56:50.000000000 +0800 -@@ -43,6 +43,7 @@ +--- interbench.c.orig 2009-10-31 04:14:59 UTC ++++ interbench.c +@@ -43,8 +43,12 @@ #include #include #include +#include #include #include ++#ifdef __FreeBSD__ ++#include ++#endif #include "interbench.h" -@@ -210,7 +211,7 @@ int test_fifo(void) + + #define MAX_UNAME_LENGTH 100 +@@ -210,7 +214,7 @@ int test_fifo(void) { struct sched_param sp; memset(&sp, 0, sizeof(sp)); - sp.sched_priority = 99; + sp.sched_priority = sched_get_priority_max(SCHED_FIFO); if (sched_setscheduler(0, SCHED_FIFO, &sp) == -1) { if (errno != EPERM) terminal_error("sched_setscheduler"); -@@ -888,7 +889,7 @@ void *timekeeping_thread(void *t) +@@ -888,7 +892,7 @@ void *timekeeping_thread(void *t) * accurate accounting remains SCHED_NORMAL; */ if (th->dt != &th->benchmarks[NOT_BENCHING]) - set_fifo(96); + set_fifo(sched_get_priority_max(SCHED_FIFO) - 1); /* These values must be changed at the appropriate places or race */ tk->sleep_interval = tk->slept_interval = 0; post_sem(&s->ready); -@@ -1133,7 +1134,7 @@ void get_ram(void) +@@ -1130,6 +1134,7 @@ write: + + void get_ram(void) + { ++#if defined(__linux__) FILE *meminfo; char aux[256]; -- if(!(meminfo = fopen("/proc/meminfo", "r"))) -+ if(!(meminfo = fopen("/compat/linux/proc/meminfo", "r"))) - terminal_error("fopen"); +@@ -1143,6 +1148,21 @@ void get_ram(void) + fgets(aux,sizeof(aux),meminfo); + if (fclose(meminfo) == -1) + terminal_error("fclose"); ++#elif defined(__FreeBSD__) ++ long pagesize, numpages; ++ quad_t swap; ++ size_t len = sizeof(swap); ++ ++ pagesize = sysconf(_SC_PAGESIZE); ++ numpages = sysconf(_SC_PHYS_PAGES); ++ if (sysctlbyname("vm.swap_total", &swap, &len, 0x0, 0) == -1) ++ swap = 0; ++ ++ ud.ram = pagesize / 1024 * numpages; ++ ud.swap = swap / 1024; ++#else ++#error unsupported operating system ++#endif - ud.ram = ud.swap = 0; -@@ -1293,7 +1294,8 @@ void run_benchchild(int i, int j) + if( !ud.ram || !ud.swap ) { + unsigned long i; +@@ -1293,7 +1313,8 @@ void run_benchchild(int i, int j) thi->dt = &thi->benchmarks[j]; initialise_thread_data(thi->dt); if (ud.do_rt) - set_thread_fifo(thi->pthread, 95); + set_thread_fifo(thi->pthread, + sched_get_priority_max(SCHED_FIFO) - 1); /* Tell main we're ready */ wakeup_with(b2m[1]); -@@ -1344,7 +1346,7 @@ void bench(int i, int j) +@@ -1344,7 +1365,7 @@ void bench(int i, int j) * We want to be higher priority than everything to signal them to * stop and we lock our memory if we can as well */ - set_fifo(99); + set_fifo(sched_get_priority_max(SCHED_FIFO)); set_mlock(); /* Wakeup the load process */ -@@ -1652,7 +1654,7 @@ bench: +@@ -1652,7 +1673,7 @@ bench: * To get as accurate a loop as possible we time it running * SCHED_FIFO if we can */ - set_fifo(99); + set_fifo(sched_get_priority_max(SCHED_FIFO)); calibrate_loop(); set_normal(); } else Index: head/benchmarks/interbench/pkg-descr =================================================================== --- head/benchmarks/interbench/pkg-descr (revision 401949) +++ head/benchmarks/interbench/pkg-descr (revision 401950) @@ -1,11 +1,9 @@ This benchmark application is designed to benchmark interactivity in Unix, originally written by Con Kolivas et al. for Linux. It is designed to measure the effect of changes in operating system kernel design or system configuration changes such as CPU, I/O scheduler and file system changes and options. With careful benchmarking, different hardware can be compared. -Requires linprocfs(5) to be mounted under /compat/linux/proc to run. - WWW: http://users.on.net/~ckolivas/interbench/