diff options
author | Clark Williams <williams@redhat.com> | 2012-03-23 09:18:47 -0500 |
---|---|---|
committer | Clark Williams <williams@redhat.com> | 2012-03-23 09:18:47 -0500 |
commit | 192a3adcd407fd0f6928333de6d4dd947796410a (patch) | |
tree | e2f2f5bd3d297986e63f5e01573405eec77430e4 | |
parent | 2819d683a31765c8f46e7e0a97cd6806516edc7a (diff) | |
parent | 3ff3300ba0dd4027ec64c0ef0c00585e681a55ea (diff) | |
download | rt-tests-192a3adcd407fd0f6928333de6d4dd947796410a.tar.gz |
Merge remote-tracking branch 'jkacur/rt-tests-0.83-devel' into work
-rw-r--r-- | .gitignore | 31 | ||||
-rw-r--r-- | Makefile | 49 | ||||
-rw-r--r-- | src/cyclictest/rt_numa.h | 1 | ||||
-rw-r--r-- | src/include/error.h | 3 | ||||
-rw-r--r-- | src/include/rt-utils.h | 5 | ||||
-rw-r--r-- | src/lib/error.c | 31 | ||||
-rw-r--r-- | src/lib/rt-utils.c | 32 | ||||
-rw-r--r-- | src/pi_tests/pi_stress.c | 8 | ||||
-rw-r--r-- | src/pmqtest/pmqtest.c | 1 | ||||
-rw-r--r-- | src/ptsematest/ptsematest.c | 1 | ||||
-rw-r--r-- | src/rt-migrate-test/rt-migrate-test.c | 85 | ||||
-rw-r--r-- | src/svsematest/svsematest.c | 1 |
12 files changed, 138 insertions, 110 deletions
@@ -10,19 +10,24 @@ releases BUILD RPMS SRPMS -classic_pi -pi_stress -cyclictest -signaltest + +# +# Top-level programs +# +/classic_pi +/pi_stress +/cyclictest +/signaltest +/hwlatdetect +/rt-migrate-test +/ptsematest +/sendme +/sigwaittest +/svsematest +/pip_stress +/hackbench +/pmqtest + rt-tests.spec -hwlatdetect tags TAGS -rt-migrate-test -ptsematest -sendme -sigwaittest -svsematest -pip_stress -hackbench -pmqtest @@ -6,7 +6,7 @@ sources = cyclictest.c signaltest.c pi_stress.c rt-migrate-test.c \ TARGETS = $(sources:.c=) -LIBS = -lrt -lpthread +LIBS = -lrt -lpthread -lrttest -L. EXTRA_LIBS ?= -ldl # for get_cpu DESTDIR ?= prefix ?= /usr/local @@ -20,7 +20,8 @@ ifneq ($(filter x86_64 i386 ia64 mips powerpc,$(machinetype)),) NUMA := 1 endif -CFLAGS = -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include +CFLAGS ?= -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include +LDFLAGS ?= PYLIB := $(shell python -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()') @@ -60,44 +61,47 @@ all: $(TARGETS) hwlatdetect # Include dependency files, automatically generate them if needed. -include $(sources:.c=.d) -cyclictest: cyclictest.o rt-utils.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(NUMA_LIBS) +cyclictest: cyclictest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(NUMA_LIBS) -signaltest: signaltest.o rt-utils.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) +signaltest: signaltest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) pi_stress: pi_stress.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) hwlatdetect: src/hwlatdetect/hwlatdetect.py chmod +x src/hwlatdetect/hwlatdetect.py ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect rt-migrate-test: rt-migrate-test.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) -ptsematest: ptsematest.o rt-utils.o rt-get_cpu.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) +ptsematest: ptsematest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) -sigwaittest: sigwaittest.o rt-utils.o rt-get_cpu.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) +sigwaittest: sigwaittest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) -svsematest: svsematest.o rt-utils.o rt-get_cpu.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) +svsematest: svsematest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) -pmqtest: pmqtest.o rt-utils.o rt-get_cpu.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) +pmqtest: pmqtest.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) -sendme: sendme.o rt-utils.o rt-get_cpu.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) +sendme: sendme.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS) -pip_stress: pip_stress.o error.o rt-utils.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) +pip_stress: pip_stress.o librttest.a + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) hackbench: hackbench.o - $(CC) $(CFLAGS) -o $@ $^ $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) -CLEANUP = $(TARGETS) *.o .depend *.*~ *.orig *.rej rt-tests.spec *.d +librttest.a: rt-utils.o error.o rt-get_cpu.o + $(AR) rcs librttest.a rt-utils.o error.o rt-get_cpu.o + +CLEANUP = $(TARGETS) *.o .depend *.*~ *.orig *.rej rt-tests.spec *.d *.a CLEANUP += $(if $(wildcard .git), ChangeLog) .PHONY: clean @@ -121,6 +125,7 @@ install: all cp $(TARGETS) "$(DESTDIR)$(bindir)" if test -n "$(PYLIB)" ; then \ install -D -m 755 src/hwlatdetect/hwlatdetect.py $(DESTDIR)$(PYLIB)/hwlatdetect.py ; \ + rm -f "$(DESTDIR)$(bindir)/hwlatdetect" ; \ ln -s $(PYLIB)/hwlatdetect.py "$(DESTDIR)$(bindir)/hwlatdetect" ; \ fi install -D -m 644 src/backfire/backfire.c "$(DESTDIR)$(srcdir)/backfire/backfire.c" diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h index 2b91615..4ae10ee 100644 --- a/src/cyclictest/rt_numa.h +++ b/src/cyclictest/rt_numa.h @@ -15,6 +15,7 @@ #define _RT_NUMA_H #include "rt-utils.h" +#include "error.h" static int numa = 0; diff --git a/src/include/error.h b/src/include/error.h index 512b3a6..1e33f6c 100644 --- a/src/include/error.h +++ b/src/include/error.h @@ -10,6 +10,9 @@ void err_exit(int err, char *fmt, ...); void err_msg(char *fmt, ...); void err_msg_n(int err, char *fmt, ...); void err_quit(char *fmt, ...); +void info(char *fmt, ...); +void warn(char *fmt, ...); +void fatal(char *fmt, ...); void err_doit(int err, const char *fmt, va_list ap); #endif /* __ERROR_H */ diff --git a/src/include/rt-utils.h b/src/include/rt-utils.h index 316b09c..4a7d01f 100644 --- a/src/include/rt-utils.h +++ b/src/include/rt-utils.h @@ -1,7 +1,6 @@ #ifndef __RT_UTILS_H #define __RT_UTILS_H - #define _STR(x) #x #define STR(x) _STR(x) #define MAX_PATH 256 @@ -18,8 +17,4 @@ int event_disable(char *event); int event_enable_all(void); int event_disable_all(void); -void warn(char *fmt, ...); -void fatal(char *fmt, ...); -void info(char *fmt, ...); - #endif /* __RT_UTILS.H */ diff --git a/src/lib/error.c b/src/lib/error.c index e9fe58f..1b5de5d 100644 --- a/src/lib/error.c +++ b/src/lib/error.c @@ -46,6 +46,37 @@ void err_quit(char *fmt, ...) exit(1); } +void info(char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + fputs("INFO: ", stderr); + err_doit(0, fmt, ap); + va_end(ap); +} + +void warn(char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + fputs("WARN: ", stderr); + err_doit(0, fmt, ap); + va_end(ap); +} + +void fatal(char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + fputs("FATAL: ", stderr); + err_doit(0, fmt, ap); + va_end(ap); + exit(EXIT_FAILURE); +} + void err_doit(int err, const char *fmt, va_list ap) { if (err) diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c index ec71dbd..f4da4b3 100644 --- a/src/lib/rt-utils.c +++ b/src/lib/rt-utils.c @@ -17,6 +17,7 @@ #include <sys/stat.h> #include <unistd.h> #include "rt-utils.h" +#include "error.h" static char debugfileprefix[MAX_PATH]; @@ -272,34 +273,3 @@ int check_privs(void) return sched_setscheduler(0, policy, &old_param); } -void info(char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - fputs("INFO: ", stderr); - vfprintf(stderr, fmt, ap); - va_end(ap); -} - -void warn(char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - fputs("WARNING: ", stderr); - vfprintf(stderr, fmt, ap); - va_end(ap); -} - -void fatal(char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - fputs("FATAL: ", stderr); - vfprintf(stderr, fmt, ap); - va_end(ap); - exit(EXIT_FAILURE); -} - diff --git a/src/pi_tests/pi_stress.c b/src/pi_tests/pi_stress.c index 0940567..e273d62 100644 --- a/src/pi_tests/pi_stress.c +++ b/src/pi_tests/pi_stress.c @@ -597,9 +597,17 @@ void *reporter(void *arg) int verify_cpu(int cpu) { int status; + int err; cpu_set_t mask; + CPU_ZERO(&mask); + status = sched_getaffinity(0, sizeof(cpu_set_t), &mask); + if (status == -1) { + err = errno; + fprintf(stderr, "sched_getaffinity %s\n", strerror(err)); + exit(-1); + } if (CPU_ISSET(cpu, &mask)) return SUCCESS; diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c index 2ac6c55..b811d95 100644 --- a/src/pmqtest/pmqtest.c +++ b/src/pmqtest/pmqtest.c @@ -37,6 +37,7 @@ #include <mqueue.h> #include "rt-utils.h" #include "rt-get_cpu.h" +#include "error.h" #include <pthread.h> diff --git a/src/ptsematest/ptsematest.c b/src/ptsematest/ptsematest.c index 14c3f81..92f0ab5 100644 --- a/src/ptsematest/ptsematest.c +++ b/src/ptsematest/ptsematest.c @@ -36,6 +36,7 @@ #include <utmpx.h> #include "rt-utils.h" #include "rt-get_cpu.h" +#include "error.h" #include <pthread.h> diff --git a/src/rt-migrate-test/rt-migrate-test.c b/src/rt-migrate-test/rt-migrate-test.c index 1963641..e3c7a09 100644 --- a/src/rt-migrate-test/rt-migrate-test.c +++ b/src/rt-migrate-test/rt-migrate-test.c @@ -44,39 +44,55 @@ #include <errno.h> #include <sched.h> #include <pthread.h> -#ifdef LOGDEV -# include <dump_log.h> -# define do_logdev_open() open("/debug/logdev/write", O_WRONLY) -# define do_logdev_close(ld) close(ld) -__thread char buff[BUFSIZ]; -static lgprint(int fd, const char *fmt, ...) + +#define gettid() syscall(__NR_gettid) + +#ifndef VERSION_STRING +#define VERSION_STRING 0.3 +#endif + +int nr_tasks; +int lfd; + +static int mark_fd = -1; +static __thread char buff[BUFSIZ+1]; + +static void setup_ftrace_marker(void) +{ + struct stat st; + char *files[] = { + "/sys/kernel/debug/tracing/trace_marker", + "/debug/tracing/trace_marker", + "/debugfs/tracing/trace_marker", + }; + int ret; + int i; + + for (i = 0; i < (sizeof(files) / sizeof(char *)); i++) { + ret = stat(files[i], &st); + if (ret >= 0) + goto found; + } + /* todo, check mounts system */ + return; +found: + mark_fd = open(files[i], O_WRONLY); +} + +static void ftrace_write(const char *fmt, ...) { va_list ap; int n; + if (mark_fd < 0) + return; + va_start(ap, fmt); n = vsnprintf(buff, BUFSIZ, fmt, ap); va_end(ap); - write(fd, buff, n); + write(mark_fd, buff, n); } -#else -# define do_logdev_open() (0) -# define do_logdev_close(lfd) do { } while(0) -# define logdev_print_set(x) do { } while(0) -# define logdev_switch_set(x) do { } while(0) -# define lgprint(x...) do { } while(0) -#endif - - -#define gettid() syscall(__NR_gettid) - -#ifndef VERSION_STRING -#define VERSION_STRING "V 0.3" -#endif - -int nr_tasks; -int lfd; #define nano2sec(nan) (nan / 1000000000ULL) #define nano2ms(nan) (nan / 1000000ULL) @@ -360,8 +376,8 @@ void *start_task(void *data) } pthread_barrier_wait(&start_barrier); start_time = get_time(); - lgprint(lfd, "Thread %d: started %lld diff %lld\n", - pid, start_time, start_time - now); + ftrace_write("Thread %d: started %lld diff %lld\n", + pid, start_time, start_time - now); l = busy_loop(start_time); record_time(id, start_time, l); pthread_barrier_wait(&end_barrier); @@ -403,8 +419,6 @@ static int check_times(int l) static void stop_log(int sig) { - logdev_print_set(0); - logdev_switch_set(0); stop = 1; } @@ -527,27 +541,25 @@ int main (int argc, char **argv) print_progress_bar(0); - lfd = do_logdev_open(); - logdev_print_set(1); - logdev_switch_set(1); + setup_ftrace_marker(); for (loop=0; loop < nr_runs; loop++) { unsigned long long end; now = get_time(); - lgprint(lfd, "Loop %d now=%lld\n", loop, now); + ftrace_write("Loop %d now=%lld\n", loop, now); pthread_barrier_wait(&start_barrier); - lgprint(lfd, "All running!!!\n"); + ftrace_write("All running!!!\n"); nanosleep(&intv, NULL); print_progress_bar((loop * 100)/ nr_runs); end = get_time(); - lgprint(lfd, "Loop %d end now=%lld diff=%lld\n", loop, end, end - now); + ftrace_write("Loop %d end now=%lld diff=%lld\n", loop, end, end - now); pthread_barrier_wait(&end_barrier); @@ -557,8 +569,6 @@ int main (int argc, char **argv) break; } } - do_logdev_close(lfd); - putc('\n', stderr); pthread_barrier_wait(&start_barrier); @@ -568,9 +578,6 @@ int main (int argc, char **argv) for (i=0; i < nr_tasks; i++) pthread_join(threads[i], (void*)&thread_pids[i]); - logdev_print_set(0); - logdev_switch_set(0); - print_results(); if (stop) { diff --git a/src/svsematest/svsematest.c b/src/svsematest/svsematest.c index d4ee1c4..89473a5 100644 --- a/src/svsematest/svsematest.c +++ b/src/svsematest/svsematest.c @@ -42,6 +42,7 @@ #include <sys/mman.h> #include "rt-utils.h" #include "rt-get_cpu.h" +#include "error.h" #define gettid() syscall(__NR_gettid) |