summaryrefslogtreecommitdiffstats
path: root/src/rt-migrate-test/rt-migrate-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt-migrate-test/rt-migrate-test.c')
-rw-r--r--src/rt-migrate-test/rt-migrate-test.c85
1 files changed, 46 insertions, 39 deletions
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) {