linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test
@ 2015-09-18 16:52 Henrik Austad
  2015-09-18 16:52 ` [PATCH 1/7] Add CROSS_COMPILE-switch to CC and AR Henrik Austad
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

So this is an attempt to consolidate some of the changes we've added to
rt-test to use rt-test. It adds support for TileGx, and a subset of the
binaries for android (cyclictest and hackbench to be precise).

They will probably need some more work, any feedback is welcome

Henrik Austad (7):
  Add CROSS_COMPILE-switch to CC and AR
  Add syscall-number for sched_(gs)etattr() for tile
  Add a rebuild-switch to Makefile
  Fix compile-warnings
  Makefile: add librttest to rt-migrate-test
  rt_test.h: add numa_available() for !NUMA
  android: adjust target for android

 Makefile                              | 37 ++++++++++++++++++++++--
 src/backfire/sendme.c                 |  8 ++++--
 src/cyclictest/cyclictest.c           | 53 ++++++++++++++++++++++++++++-------
 src/cyclictest/rt_numa.h              |  1 +
 src/include/rt-sched.h                |  5 ++++
 src/pmqtest/pmqtest.c                 |  3 +-
 src/ptsematest/ptsematest.c           |  3 +-
 src/rt-migrate-test/rt-migrate-test.c |  5 ++--
 src/signaltest/signaltest.c           | 25 ++++++++++-------
 src/sigwaittest/sigwaittest.c         |  8 ++++--
 src/svsematest/svsematest.c           |  9 ++++--
 11 files changed, 125 insertions(+), 32 deletions(-)

-- 
1.9.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/7] Add CROSS_COMPILE-switch to CC and AR
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 16:52 ` [PATCH 2/7] Add syscall-number for sched_(gs)etattr() for tile Henrik Austad
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Makefile b/Makefile
index f3534b3..d4988c5 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
 VERSION = 0.93
+CC=$(CROSS_COMPILE)gcc
+AR=$(CROSS_COMPILE)ar
 
 HAVE_NPTL ?= yes
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/7] Add syscall-number for sched_(gs)etattr() for tile
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
  2015-09-18 16:52 ` [PATCH 1/7] Add CROSS_COMPILE-switch to CC and AR Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 16:52 ` [PATCH 3/7] Add a rebuild-switch to Makefile Henrik Austad
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 src/include/rt-sched.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h
index 6c45f7a..b46b1b1 100644
--- a/src/include/rt-sched.h
+++ b/src/include/rt-sched.h
@@ -47,6 +47,11 @@
 #define __NR_sched_getattr		381
 #endif
 
+#ifdef __tilegx__
+#define __NR_sched_setattr		274
+#define __NR_sched_getattr		275
+#endif
+
 struct sched_attr {
 	uint32_t size;
 	uint32_t sched_policy;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/7] Add a rebuild-switch to Makefile
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
  2015-09-18 16:52 ` [PATCH 1/7] Add CROSS_COMPILE-switch to CC and AR Henrik Austad
  2015-09-18 16:52 ` [PATCH 2/7] Add syscall-number for sched_(gs)etattr() for tile Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 21:10   ` Josh Cartwright
  2015-09-18 16:52 ` [PATCH 4/7] Fix compile-warnings Henrik Austad
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Makefile b/Makefile
index d4988c5..160547c 100644
--- a/Makefile
+++ b/Makefile
@@ -129,6 +129,9 @@ RPMDIRS = BUILD BUILDROOT RPMS SRPMS SPECS
 distclean: clean
 	rm -rf $(RPMDIRS) releases *.tar.gz rt-tests.spec tmp
 
+.PHONY: rebuild
+rebuild: clean all
+
 .PHONY: changelog
 changelog:
 	git log >ChangeLog
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/7] Fix compile-warnings
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
                   ` (2 preceding siblings ...)
  2015-09-18 16:52 ` [PATCH 3/7] Add a rebuild-switch to Makefile Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 16:52 ` [PATCH 5/7] Makefile: add librttest to rt-migrate-test Henrik Austad
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Check return-value from read/write/ftruncate and remove unused variables.

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 src/backfire/sendme.c                 |  8 ++++++--
 src/cyclictest/cyclictest.c           | 10 +++++++---
 src/pmqtest/pmqtest.c                 |  3 ++-
 src/ptsematest/ptsematest.c           |  3 ++-
 src/rt-migrate-test/rt-migrate-test.c |  5 +++--
 src/signaltest/signaltest.c           | 25 +++++++++++++++----------
 src/sigwaittest/sigwaittest.c         |  8 ++++++--
 src/svsematest/svsematest.c           |  9 +++++++--
 8 files changed, 48 insertions(+), 23 deletions(-)

diff --git a/src/backfire/sendme.c b/src/backfire/sendme.c
index c1854d9..e524fbf 100644
--- a/src/backfire/sendme.c
+++ b/src/backfire/sendme.c
@@ -256,9 +256,13 @@ int main(int argc, char *argv[])
 			ts.tv_nsec = (interval % USEC_PER_SEC) * 1000;
 
 			gettimeofday(&before, NULL);
-			write(path, sigtest, strlen(sigtest));
+			if (write(path, sigtest, strlen(sigtest)) < 0) {
+				fprintf(stderr, "Could not write sigtest to backfire-path\n");
+			}
 			while (after.tv_sec == 0);
-			read(path, timestamp, sizeof(timestamp));
+			if (read(path, timestamp, sizeof(timestamp)) <= 0) {
+				fprintf(stderr, "Trouble reading file backfire-path\n");
+			}
 			if (sscanf(timestamp, "%lu,%lu\n", &sendtime.tv_sec,
 			    &sendtime.tv_usec) != 2)
 				break;
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 587e815..86492ba 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -437,7 +437,9 @@ static void tracemark(char *fmt, ...)
 	va_start(ap, fmt);
 	len = vsnprintf(tracebuf, TRACEBUFSIZ, fmt, ap);
 	va_end(ap);
-	write(tracemark_fd, tracebuf, len);
+	if (write(tracemark_fd, tracebuf, len) < 0) {
+		err_msg_n(errno, "WARN: could not write to tracebuf");
+	}
 }
 
 
@@ -450,7 +452,8 @@ void tracing(int on)
 		case KV_26_LT24: prctl(0, 1); break;
 		case KV_26_33:
 		case KV_30:
-			write(trace_fd, "1", 1);
+			if (write(trace_fd, "1", 1) < 0)
+				err_msg_n(errno, "Could not set trace_fd");
 			break;
 		default:	 break;
 		}
@@ -460,7 +463,8 @@ void tracing(int on)
 		case KV_26_LT24: prctl(0, 0); break;
 		case KV_26_33:
 		case KV_30:
-			write(trace_fd, "0", 1);
+			if (write(trace_fd, "0", 1) < 0)
+				err_msg_n(errno, "Could not set trace_fd");
 			break;
 		default:	break;
 		}
diff --git a/src/pmqtest/pmqtest.c b/src/pmqtest/pmqtest.c
index 75d5ee8..78eaa9c 100644
--- a/src/pmqtest/pmqtest.c
+++ b/src/pmqtest/pmqtest.c
@@ -210,7 +210,8 @@ void *pmqthread(void *param)
 				int tracing_enabled =
 				    open(tracing_enabled_file, O_WRONLY);
 				if (tracing_enabled >= 0) {
-					write(tracing_enabled, "0", 1);
+					if (write(tracing_enabled, "0", 1) < 0)
+						err_msg_n(errno, "WARN: could write to tracing_enabled");
 					close(tracing_enabled);
 				} else
 					snprintf(par->error, sizeof(par->error),
diff --git a/src/ptsematest/ptsematest.c b/src/ptsematest/ptsematest.c
index a31c745..f777b38 100644
--- a/src/ptsematest/ptsematest.c
+++ b/src/ptsematest/ptsematest.c
@@ -137,7 +137,8 @@ void *semathread(void *param)
 				int tracing_enabled =
 				    open(tracing_enabled_file, O_WRONLY);
 				if (tracing_enabled >= 0) {
-					write(tracing_enabled, "0", 1);
+					if (write(tracing_enabled, "0", 1) < 0)
+						err_msg_n(errno, "WARN: Could not enable tracing.");
 					close(tracing_enabled);
 				} else
 					snprintf(par->error, sizeof(par->error),
diff --git a/src/rt-migrate-test/rt-migrate-test.c b/src/rt-migrate-test/rt-migrate-test.c
index fc6fd81..a84a66e 100644
--- a/src/rt-migrate-test/rt-migrate-test.c
+++ b/src/rt-migrate-test/rt-migrate-test.c
@@ -44,7 +44,7 @@
 #include <errno.h>
 #include <sched.h>
 #include <pthread.h>
-
+#include "error.h"
 #define gettid() syscall(__NR_gettid)
 
 #ifndef VERSION_STRING
@@ -91,7 +91,8 @@ static void ftrace_write(const char *fmt, ...)
 	n = vsnprintf(buff, BUFSIZ, fmt, ap);
 	va_end(ap);
 
-	write(mark_fd, buff, n);
+	if (write(mark_fd, buff, n) < 0)
+		err_msg_n(errno, "WARN: Could not write to trace_marker.");
 }
 
 #define nano2sec(nan) (nan / 1000000000ULL)
diff --git a/src/signaltest/signaltest.c b/src/signaltest/signaltest.c
index 61259a0..8c780b9 100644
--- a/src/signaltest/signaltest.c
+++ b/src/signaltest/signaltest.c
@@ -64,6 +64,11 @@ struct thread_stat {
 	int threadstarted;
 	int tid;
 };
+#define SYSTEM_W(x)				\
+	if (system((x)) < 0) {			\
+		fprintf(stderr, "Trouble running %s\n", (x));	\
+		return NULL;					\
+	}							\
 
 static int shutdown;
 static int tracelimit = 0;
@@ -101,16 +106,16 @@ void *signalthread(void *param)
 	int first = 1;
 
 	if (tracelimit) {
-		system("echo 1 > /proc/sys/kernel/trace_all_cpus");
-		system("echo 1 > /proc/sys/kernel/trace_enabled");
-		system("echo 1 > /proc/sys/kernel/trace_freerunning");
-		system("echo 0 > /proc/sys/kernel/trace_print_at_crash");
-		system("echo 1 > /proc/sys/kernel/trace_user_triggered");
-		system("echo -1 > /proc/sys/kernel/trace_user_trigger_irq");
-		system("echo 0 > /proc/sys/kernel/trace_verbose");
-		system("echo 0 > /proc/sys/kernel/preempt_thresh");
-		system("echo 0 > /proc/sys/kernel/wakeup_timing");
-		system("echo 0 > /proc/sys/kernel/preempt_max_latency");
+		SYSTEM_W("echo 1 > /proc/sys/kernel/trace_all_cpus");
+		SYSTEM_W("echo 1 > /proc/sys/kernel/trace_enabled");
+		SYSTEM_W("echo 1 > /proc/sys/kernel/trace_freerunning");
+		SYSTEM_W("echo 0 > /proc/sys/kernel/trace_print_at_crash");
+		SYSTEM_W("echo 1 > /proc/sys/kernel/trace_user_triggered");
+		SYSTEM_W("echo -1 > /proc/sys/kernel/trace_user_trigger_irq");
+		SYSTEM_W("echo 0 > /proc/sys/kernel/trace_verbose");
+		SYSTEM_W("echo 0 > /proc/sys/kernel/preempt_thresh");
+		SYSTEM_W("echo 0 > /proc/sys/kernel/wakeup_timing");
+		SYSTEM_W("echo 0 > /proc/sys/kernel/preempt_max_latency");
 	}
 
 	stat->tid = gettid();
diff --git a/src/sigwaittest/sigwaittest.c b/src/sigwaittest/sigwaittest.c
index 91fcdaa..abeaa35 100644
--- a/src/sigwaittest/sigwaittest.c
+++ b/src/sigwaittest/sigwaittest.c
@@ -36,6 +36,7 @@
 #include <sys/time.h>
 #include <linux/unistd.h>
 #include <utmpx.h>
+#include "error.h"
 #include "rt-utils.h"
 #include "rt-get_cpu.h"
 
@@ -185,7 +186,8 @@ void *semathread(void *param)
 				int tracing_enabled =
 				    open(tracing_enabled_file, O_WRONLY);
 				if (tracing_enabled >= 0) {
-					write(tracing_enabled, "0", 1);
+					if (write(tracing_enabled, "0", 1) < 0)
+						err_msg_n(errno, "WARN: Could not disable tracing.");
 					close(tracing_enabled);
 				} else
 					snprintf(par->error, sizeof(par->error),
@@ -378,7 +380,9 @@ int main(int argc, char *argv[])
 			fprintf(stderr, "Could not create shared memory\n");
 			return 1;
 		}
-		ftruncate(shmem, totalsize);
+		if (ftruncate(shmem, totalsize) < 0)
+			err_msg_n(errno, "WARN: Could not truncate file to %d bytes.", totalsize);
+
 		param = mmap(0, totalsize, PROT_READ|PROT_WRITE, MAP_SHARED,
 		    shmem, 0);
 		if (param == MAP_FAILED) {
diff --git a/src/svsematest/svsematest.c b/src/svsematest/svsematest.c
index eeb8285..9d4d2b9 100644
--- a/src/svsematest/svsematest.c
+++ b/src/svsematest/svsematest.c
@@ -191,7 +191,8 @@ void *semathread(void *param)
 				int tracing_enabled =
 				    open(tracing_enabled_file, O_WRONLY);
 				if (tracing_enabled >= 0) {
-					write(tracing_enabled, "0", 1);
+					if (write(tracing_enabled, "0", 1))
+						err_msg_n(errno, "WARN: Could not write to tracing_enabled!");
 					close(tracing_enabled);
 				} else
 					snprintf(par->error, sizeof(par->error),
@@ -431,7 +432,11 @@ int main(int argc, char *argv[])
 			fprintf(stderr, "Could not create shared memory\n");
 			return 1;
 		}
-		ftruncate(shmem, totalsize);
+		if (ftruncate(shmem, totalsize) < 0) {
+			fprintf(stderr, "Could not truncate file to specified size (%d)\n", totalsize);
+			return 1;
+
+		}
 		param = mmap(0, totalsize, PROT_READ|PROT_WRITE, MAP_SHARED,
 		    shmem, 0);
 		if (param == MAP_FAILED) {
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 5/7] Makefile: add librttest to rt-migrate-test
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
                   ` (3 preceding siblings ...)
  2015-09-18 16:52 ` [PATCH 4/7] Fix compile-warnings Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 16:52 ` [PATCH 6/7] rt_test.h: add numa_available() for !NUMA Henrik Austad
  2015-09-18 16:52 ` [PATCH 7/7] android: adjust target for android Henrik Austad
  6 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

linker must be able to resolve reference to err_msg_n properly

   rt-migrate-test.c:(.text+0x1ff): undefined reference to `err_msg_n'

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 160547c..b034e19 100644
--- a/Makefile
+++ b/Makefile
@@ -87,8 +87,8 @@ 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) $(LDFLAGS) -o $@ $< $(LIBS)
+rt-migrate-test: rt-migrate-test.o librttest.a
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
 
 ptsematest: ptsematest.o librttest.a
 	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(EXTRA_LIBS)
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 6/7] rt_test.h: add numa_available() for !NUMA
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
                   ` (4 preceding siblings ...)
  2015-09-18 16:52 ` [PATCH 5/7] Makefile: add librttest to rt-migrate-test Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  2015-09-18 21:27   ` Josh Cartwright
  2015-09-18 16:52 ` [PATCH 7/7] android: adjust target for android Henrik Austad
  6 siblings, 1 reply; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Code will snould not call numa_available(), but compiler will complain
with:

  src/cyclictest/rt_numa.h:263: warning: implicit declaration of function ‘numa_available’

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 src/cyclictest/rt_numa.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h
index 06c9420..172d9b2 100644
--- a/src/cyclictest/rt_numa.h
+++ b/src/cyclictest/rt_numa.h
@@ -200,6 +200,7 @@ struct bitmask {
 };
 #define BITS_PER_LONG    (8*sizeof(long))
 
+static inline int numa_available(void) { return 0; }
 static inline void *threadalloc(size_t size, int n) { return malloc(size); }
 static inline void threadfree(void *ptr, size_t s, int n) { free(ptr); }
 static inline void rt_numa_set_numa_run_on_node(int n, int c) { }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 7/7] android: adjust target for android
  2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
                   ` (5 preceding siblings ...)
  2015-09-18 16:52 ` [PATCH 6/7] rt_test.h: add numa_available() for !NUMA Henrik Austad
@ 2015-09-18 16:52 ` Henrik Austad
  6 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-18 16:52 UTC (permalink / raw)
  To: Clark Williams, John Kacur; +Cc: linux-rt-users, Henrik Austad

Bionic (Android's libc implementation) lacks support for (amongst other
things) pthread_barriers and pthread_setaffinity. The former is removed
by ifdeffery, the latter is added as a per-android wrapper to
sched_setaffinity.

Signed-off-by: Henrik Austad <haustad@cisco.com>
---
 Makefile                    | 28 ++++++++++++++++++++++++++++
 src/cyclictest/cyclictest.c | 43 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index b034e19..7f859e9 100644
--- a/Makefile
+++ b/Makefile
@@ -49,6 +49,32 @@ ifeq ($(NUMA),1)
 	NUMA_LIBS = -lnuma
 endif
 
+# Bionic (android) does not have:
+# - pthread barriers
+# - pthread_[gs]etaffinity
+#
+# Typically see something like "aarch64-linux-android"
+
+ifneq ($(shell $(CC) -dumpmachine | grep -i android),)
+	USE_BIONIC := 1
+	CFLAGS += -DNO_PTHREAD_BARRIER
+	CFLAGS += -DNO_PTHREAD_SETAFFINITY
+
+	LDFLAGS += -pie
+# -lrt and -lpthread is in standard bionic library, no standalone library
+	LIBS := $(filter-out -lrt,$(LIBS))
+	LIBS := $(filter-out -lpthread,$(LIBS))
+
+# BIONIC does not support PI, barriers and have different files in
+# include/. This menas that currently, only these binaries will compile
+# and link properly:
+# - cyclictest
+# - hackbench
+# - hwlatdetect
+	sources := cyclictest.c hackbench.c hwlatdetect.c
+	TARGETS = $(sources:.c=)
+endif
+
 VPATH	= src/cyclictest:
 VPATH	+= src/signaltest:
 VPATH	+= src/pi_tests:
@@ -150,7 +176,9 @@ install: all
 	install -m 644 src/backfire/Makefile "$(DESTDIR)$(srcdir)/backfire/Makefile"
 	gzip src/backfire/backfire.4 -c >"$(DESTDIR)$(mandir)/man4/backfire.4.gz"
 	gzip src/cyclictest/cyclictest.8 -c >"$(DESTDIR)$(mandir)/man8/cyclictest.8.gz"
+ifneq ($(USE_BIONIC),1)
 	gzip src/pi_tests/pi_stress.8 -c >"$(DESTDIR)$(mandir)/man8/pi_stress.8.gz"
+endif
 	gzip src/hwlatdetect/hwlatdetect.8 -c >"$(DESTDIR)$(mandir)/man8/hwlatdetect.8.gz"
 	gzip src/ptsematest/ptsematest.8 -c >"$(DESTDIR)$(mandir)/man8/ptsematest.8.gz"
 	gzip src/sigwaittest/sigwaittest.8 -c >"$(DESTDIR)$(mandir)/man8/sigwaittest.8.gz"
diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
index 86492ba..898a4f7 100644
--- a/src/cyclictest/cyclictest.c
+++ b/src/cyclictest/cyclictest.c
@@ -11,7 +11,6 @@
  * 2 as published by the Free Software Foundation.
  *
  */
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
@@ -36,6 +35,7 @@
 #include <sys/resource.h>
 #include <sys/utsname.h>
 #include <sys/mman.h>
+#include <sys/syscall.h>
 #include "rt_numa.h"
 
 #include "rt-utils.h"
@@ -78,6 +78,15 @@ int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
 	return -EINVAL;
 }
 
+#endif
+
+#ifdef NO_PTHREAD_SETAFFINITY
+static inline int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize,
+                                         const cpu_set_t *cpuset)
+{
+    return sched_setaffinity(0, cpusetsize, cpuset);
+}
+
 #undef CPU_SET
 #undef CPU_ZERO
 #define CPU_SET(cpu, cpusetp)
@@ -184,9 +193,6 @@ static int check_clock_resolution;
 static int ct_debug;
 static int use_fifo = 0;
 static pthread_t fifo_threadid;
-static int aligned = 0;
-static int secaligned = 0;
-static int offset = 0;
 static int laptop = 0;
 
 static pthread_cond_t refresh_on_max_cond = PTHREAD_COND_INITIALIZER;
@@ -196,9 +202,14 @@ static pthread_mutex_t break_thread_id_lock = PTHREAD_MUTEX_INITIALIZER;
 static pid_t break_thread_id = 0;
 static uint64_t break_thread_value = 0;
 
+#ifndef NO_PTHREAD_BARRIER
+static int aligned = 0;
+static int secaligned = 0;
+static int offset = 0;
 static pthread_barrier_t align_barr;
 static pthread_barrier_t globalt_barr;
 static struct timespec globalt;
+#endif
 
 /* Backup of kernel variables that we modify */
 static struct kvars {
@@ -803,7 +814,8 @@ void *timerthread(void *param)
 		fatal("timerthread%d: failed to set priority to %d\n", par->cpu, par->prio);
 
 	/* Get current time */
-	if (aligned || secaligned) {
+#ifndef NO_PTHREAD_BARRIER
+	if(aligned || secaligned){
 		pthread_barrier_wait(&globalt_barr);
 		if (par->tnum == 0) {
 			clock_gettime(par->clock, &globalt);
@@ -828,6 +840,7 @@ void *timerthread(void *param)
 		}
 	}
 	else
+#endif
 		clock_gettime(par->clock, &now);
 
 	next = now;
@@ -1034,7 +1047,9 @@ static void display_help(int error)
 	       "-a [NUM] --affinity        run thread #N on processor #N, if possible\n"
 	       "                           with NUM pin all threads to the processor NUM\n"
 #endif
+#ifndef NO_PTHREAD_BARRIER
 	       "-A USEC  --aligned=USEC    align thread wakeups to a specific offset\n"
+#endif
 	       "-b USEC  --breaktrace=USEC send break trace command when latency > USEC\n"
 	       "-B       --preemptirqs     both preempt and irqsoff tracing (used with -b)\n"
 	       "-c CLOCK --clock=CLOCK     select clock\n"
@@ -1074,7 +1089,9 @@ static void display_help(int error)
 	       "-R       --resolution      check clock resolution, calling clock_gettime() many\n"
 	       "                           times.  list of clock_gettime() values will be\n"
 	       "                           reported with -X\n"
+#ifndef NO_PTHREAD_BARRIER
 	       "         --secaligned [USEC] align thread wakeups to the next full second,\n"
+#endif
 	       "                           and apply the optional offset\n"
 	       "-s       --system          use sys_nanosleep and sys_setitimer\n"
 	       "-S       --smp             Standard SMP testing: options -a -t -n and\n"
@@ -1224,7 +1241,10 @@ enum option_values {
 	OPT_QUIET, OPT_PRIOSPREAD, OPT_RELATIVE, OPT_RESOLUTION, OPT_SYSTEM,
 	OPT_SMP, OPT_THREADS, OPT_TRACER, OPT_UNBUFFERED, OPT_NUMA, OPT_VERBOSE,
 	OPT_WAKEUP, OPT_WAKEUPRT, OPT_DBGCYCLIC, OPT_POLICY, OPT_HELP, OPT_NUMOPTS,
-	OPT_ALIGNED, OPT_LAPTOP, OPT_SECALIGNED,
+#ifndef NO_PTHREAD_BARRIER
+	OPT_ALIGNED, OPT_SECALIGNED,
+#endif
+        OPT_LAPTOP,
 };
 
 /* Process commandline options */
@@ -1242,7 +1262,9 @@ static void process_options (int argc, char *argv[], int max_cpus)
 		static struct option long_options[] = {
 			{"affinity",         optional_argument, NULL, OPT_AFFINITY},
 			{"notrace",          no_argument,       NULL, OPT_NOTRACE },
+#ifndef NO_PTHREAD_BARRIER
 			{"aligned",          optional_argument, NULL, OPT_ALIGNED },
+#endif
 			{"breaktrace",       required_argument, NULL, OPT_BREAKTRACE },
 			{"preemptirqs",      no_argument,       NULL, OPT_PREEMPTIRQ },
 			{"clock",            required_argument, NULL, OPT_CLOCK },
@@ -1271,7 +1293,9 @@ static void process_options (int argc, char *argv[], int max_cpus)
 			{"priospread",       no_argument,       NULL, OPT_PRIOSPREAD },
 			{"relative",         no_argument,       NULL, OPT_RELATIVE },
 			{"resolution",       no_argument,       NULL, OPT_RESOLUTION },
+#ifndef NO_PTHREAD_BARRIER
 			{"secaligned",       optional_argument, NULL, OPT_SECALIGNED },
+#endif
 			{"system",           no_argument,       NULL, OPT_SYSTEM },
 			{"smp",              no_argument,       NULL, OPT_SMP },
 			{"threads",          optional_argument, NULL, OPT_THREADS },
@@ -1306,6 +1330,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 				setaffinity = AFFINITY_USEALL;
 			}
 			break;
+#ifndef NO_PTHREAD_BARRIER
 		case 'A':
 		case OPT_ALIGNED:
 			aligned=1;
@@ -1316,6 +1341,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 			else
 				offset = 0;
 			break;
+#endif
 		case 'b':
 		case OPT_BREAKTRACE:
 			tracelimit = atoi(optarg); break;
@@ -1412,6 +1438,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 		case OPT_RESOLUTION:
 			check_clock_resolution = 1; break;
 		case 's':
+#ifndef NO_PTHREAD_BARRIER
 		case OPT_SECALIGNED:
 			secaligned = 1;
 			if (optarg != NULL)
@@ -1421,6 +1448,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 			else
 				offset = 0;
 			break;
+#endif
 		case OPT_SYSTEM:
 			use_system = MODE_SYS_OFFSET; break;
 		case 'S':
@@ -1558,6 +1586,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 	if (num_threads < 1)
 		error = 1;
 
+#ifndef NO_PTHREAD_BARRIER
 	if (aligned && secaligned)
 		error = 1;
 
@@ -1565,7 +1594,7 @@ static void process_options (int argc, char *argv[], int max_cpus)
 		pthread_barrier_init(&globalt_barr, NULL, num_threads);
 		pthread_barrier_init(&align_barr, NULL, num_threads);
 	}

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/7] Add a rebuild-switch to Makefile
  2015-09-18 16:52 ` [PATCH 3/7] Add a rebuild-switch to Makefile Henrik Austad
@ 2015-09-18 21:10   ` Josh Cartwright
  2015-09-19  5:41     ` Henrik Austad
  0 siblings, 1 reply; 12+ messages in thread
From: Josh Cartwright @ 2015-09-18 21:10 UTC (permalink / raw)
  To: Henrik Austad; +Cc: Clark Williams, John Kacur, linux-rt-users

[-- Attachment #1: Type: text/plain, Size: 727 bytes --]

On Fri, Sep 18, 2015 at 06:52:46PM +0200, Henrik Austad wrote:
> Signed-off-by: Henrik Austad <haustad@cisco.com>
> ---
>  Makefile | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index d4988c5..160547c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -129,6 +129,9 @@ RPMDIRS = BUILD BUILDROOT RPMS SRPMS SPECS
>  distclean: clean
>  	rm -rf $(RPMDIRS) releases *.tar.gz rt-tests.spec tmp
>  
> +.PHONY: rebuild
> +rebuild: clean all

Does this actually work?  Make is free to execute 'clean' and 'all' at
the same time, with ... interesting side effects.

If you really want this (and I'm not sure you do):

.PHONY: rebuild
rebuild:
	$(MAKE) clean
	$(MAKE)

  Josh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 6/7] rt_test.h: add numa_available() for !NUMA
  2015-09-18 16:52 ` [PATCH 6/7] rt_test.h: add numa_available() for !NUMA Henrik Austad
@ 2015-09-18 21:27   ` Josh Cartwright
  2015-09-19  5:49     ` Henrik Austad
  0 siblings, 1 reply; 12+ messages in thread
From: Josh Cartwright @ 2015-09-18 21:27 UTC (permalink / raw)
  To: Henrik Austad; +Cc: Clark Williams, John Kacur, linux-rt-users

[-- Attachment #1: Type: text/plain, Size: 1001 bytes --]

On Fri, Sep 18, 2015 at 06:52:49PM +0200, Henrik Austad wrote:
> Code will snould not call numa_available(), but compiler will complain

snould -> should.

Why should it not call it?

> with:
> 
>   src/cyclictest/rt_numa.h:263: warning: implicit declaration of function ???numa_available???
> 
> Signed-off-by: Henrik Austad <haustad@cisco.com>
> ---
>  src/cyclictest/rt_numa.h | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h
> index 06c9420..172d9b2 100644
> --- a/src/cyclictest/rt_numa.h
> +++ b/src/cyclictest/rt_numa.h
> @@ -200,6 +200,7 @@ struct bitmask {
>  };
>  #define BITS_PER_LONG    (8*sizeof(long))
>  
> +static inline int numa_available(void) { return 0; }

I would have expected this to return -1, as libnuma isn't available...

John and I were talking about this earlier this week:

http://lkml.kernel.org/r/787515a5a59861a892ac3a44b6c6c502cfc102fd.1441038216.git.joshc@ni.com

  Josh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/7] Add a rebuild-switch to Makefile
  2015-09-18 21:10   ` Josh Cartwright
@ 2015-09-19  5:41     ` Henrik Austad
  0 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-19  5:41 UTC (permalink / raw)
  To: Josh Cartwright; +Cc: Clark Williams, John Kacur, linux-rt-users

On Fri, Sep 18, 2015 at 04:10:31PM -0500, Josh Cartwright wrote:
> On Fri, Sep 18, 2015 at 06:52:46PM +0200, Henrik Austad wrote:
> > Signed-off-by: Henrik Austad <haustad@cisco.com>
> > ---
> >  Makefile | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/Makefile b/Makefile
> > index d4988c5..160547c 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -129,6 +129,9 @@ RPMDIRS = BUILD BUILDROOT RPMS SRPMS SPECS
> >  distclean: clean
> >  	rm -rf $(RPMDIRS) releases *.tar.gz rt-tests.spec tmp
> >  
> > +.PHONY: rebuild
> > +rebuild: clean all
> 
> Does this actually work?  Make is free to execute 'clean' and 'all' at
> the same time, with ... interesting side effects.

You're right. It works as long as you have -j1. Never had an issue as the 
whole make-job is small enough to be run with just 'make rebuild' and not a 
ton of jobs.

> If you really want this (and I'm not sure you do):

Well, it became pretty apparent when I tested to see that I didn't break 
tile or x86 when compiling for 64-bit arm android

> .PHONY: rebuild
> rebuild:
> 	$(MAKE) clean
> 	$(MAKE)

Yep, that works much better, thanks

-- 
Henrik Austad
TIPBU Eng
Cisco Systems Norway

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 6/7] rt_test.h: add numa_available() for !NUMA
  2015-09-18 21:27   ` Josh Cartwright
@ 2015-09-19  5:49     ` Henrik Austad
  0 siblings, 0 replies; 12+ messages in thread
From: Henrik Austad @ 2015-09-19  5:49 UTC (permalink / raw)
  To: Josh Cartwright; +Cc: Clark Williams, John Kacur, linux-rt-users

On Fri, Sep 18, 2015 at 04:27:07PM -0500, Josh Cartwright wrote:
> On Fri, Sep 18, 2015 at 06:52:49PM +0200, Henrik Austad wrote:
> > Code will snould not call numa_available(), but compiler will complain
> 
> snould -> should.
> 
> Why should it not call it?

Because if numa is 0, it will stop evaluating the conditional and never get 
to numa_available()

        if (numa && (numa_available() == -1))
                fatal("--numa specified and numa functions not available.\n");

Even so, the compiler will try to find the symbol, which it couldn't. So 
the warning was legit, but the problem would never arise in practice (as 
you state below).

> > with:
> > 
> >   src/cyclictest/rt_numa.h:263: warning: implicit declaration of function ???numa_available???
> > 
> > Signed-off-by: Henrik Austad <haustad@cisco.com>
> > ---
> >  src/cyclictest/rt_numa.h | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h
> > index 06c9420..172d9b2 100644
> > --- a/src/cyclictest/rt_numa.h
> > +++ b/src/cyclictest/rt_numa.h
> > @@ -200,6 +200,7 @@ struct bitmask {
> >  };
> >  #define BITS_PER_LONG    (8*sizeof(long))
> >  
> > +static inline int numa_available(void) { return 0; }
> 
> I would have expected this to return -1, as libnuma isn't available...

Ah, you're right, should have been -1.

> John and I were talking about this earlier this week:
> 
> http://lkml.kernel.org/r/787515a5a59861a892ac3a44b6c6c502cfc102fd.1441038216.git.joshc@ni.com

I agree, that is a much better way of dealing with it! 

Thanks!

-- 
Henrik Austad
TIPBU Eng
Cisco Systems Norway

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-09-19  5:52 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-18 16:52 [PATCH 0/7] RFC v1: add support for tilegx and (partial) android support to rt-test Henrik Austad
2015-09-18 16:52 ` [PATCH 1/7] Add CROSS_COMPILE-switch to CC and AR Henrik Austad
2015-09-18 16:52 ` [PATCH 2/7] Add syscall-number for sched_(gs)etattr() for tile Henrik Austad
2015-09-18 16:52 ` [PATCH 3/7] Add a rebuild-switch to Makefile Henrik Austad
2015-09-18 21:10   ` Josh Cartwright
2015-09-19  5:41     ` Henrik Austad
2015-09-18 16:52 ` [PATCH 4/7] Fix compile-warnings Henrik Austad
2015-09-18 16:52 ` [PATCH 5/7] Makefile: add librttest to rt-migrate-test Henrik Austad
2015-09-18 16:52 ` [PATCH 6/7] rt_test.h: add numa_available() for !NUMA Henrik Austad
2015-09-18 21:27   ` Josh Cartwright
2015-09-19  5:49     ` Henrik Austad
2015-09-18 16:52 ` [PATCH 7/7] android: adjust target for android Henrik Austad

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).