]> Pileus Git - ~andy/linux/blobdiff - kernel/trace/trace_selftest.c
Merge tag 'for-usb-linus-2014-02-04' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / kernel / trace / trace_selftest.c
index a7329b7902f81fff4c2bafa3d4ef29780b52fe3d..e98fca60974f57a36d8c2780e5164c62b10195a8 100644 (file)
@@ -1022,11 +1022,16 @@ trace_selftest_startup_nop(struct tracer *trace, struct trace_array *tr)
 #ifdef CONFIG_SCHED_TRACER
 static int trace_wakeup_test_thread(void *data)
 {
-       /* Make this a RT thread, doesn't need to be too high */
-       static const struct sched_param param = { .sched_priority = 5 };
+       /* Make this a -deadline thread */
+       static const struct sched_attr attr = {
+               .sched_policy = SCHED_DEADLINE,
+               .sched_runtime = 100000ULL,
+               .sched_deadline = 10000000ULL,
+               .sched_period = 10000000ULL
+       };
        struct completion *x = data;
 
-       sched_setscheduler(current, SCHED_FIFO, &param);
+       sched_setattr(current, &attr);
 
        /* Make it know we have a new prio */
        complete(x);
@@ -1040,8 +1045,8 @@ static int trace_wakeup_test_thread(void *data)
        /* we are awake, now wait to disappear */
        while (!kthread_should_stop()) {
                /*
-                * This is an RT task, do short sleeps to let
-                * others run.
+                * This will likely be the system top priority
+                * task, do short sleeps to let others run.
                 */
                msleep(100);
        }
@@ -1054,21 +1059,21 @@ trace_selftest_startup_wakeup(struct tracer *trace, struct trace_array *tr)
 {
        unsigned long save_max = tracing_max_latency;
        struct task_struct *p;
-       struct completion isrt;
+       struct completion is_ready;
        unsigned long count;
        int ret;
 
-       init_completion(&isrt);
+       init_completion(&is_ready);
 
-       /* create a high prio thread */
-       p = kthread_run(trace_wakeup_test_thread, &isrt, "ftrace-test");
+       /* create a -deadline thread */
+       p = kthread_run(trace_wakeup_test_thread, &is_ready, "ftrace-test");
        if (IS_ERR(p)) {
                printk(KERN_CONT "Failed to create ftrace wakeup test thread ");
                return -1;
        }
 
-       /* make sure the thread is running at an RT prio */
-       wait_for_completion(&isrt);
+       /* make sure the thread is running at -deadline policy */
+       wait_for_completion(&is_ready);
 
        /* start the tracing */
        ret = tracer_init(trace, tr);
@@ -1082,19 +1087,19 @@ trace_selftest_startup_wakeup(struct tracer *trace, struct trace_array *tr)
 
        while (p->on_rq) {
                /*
-                * Sleep to make sure the RT thread is asleep too.
+                * Sleep to make sure the -deadline thread is asleep too.
                 * On virtual machines we can't rely on timings,
                 * but we want to make sure this test still works.
                 */
                msleep(100);
        }
 
-       init_completion(&isrt);
+       init_completion(&is_ready);
 
        wake_up_process(p);
 
        /* Wait for the task to wake up */
-       wait_for_completion(&isrt);
+       wait_for_completion(&is_ready);
 
        /* stop the tracing. */
        tracing_stop();