Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[powerpc.git] / kernel / rtmutex-tester.c
index fe211ba..494dac8 100644 (file)
@@ -33,7 +33,7 @@ struct test_thread_data {
 };
 
 static struct test_thread_data thread_data[MAX_RT_TEST_THREADS];
-static task_t *threads[MAX_RT_TEST_THREADS];
+static struct task_struct *threads[MAX_RT_TEST_THREADS];
 static struct rt_mutex mutexes[MAX_RT_TEST_MUTEXES];
 
 enum test_opcodes {
@@ -46,7 +46,7 @@ enum test_opcodes {
        RTTEST_LOCKINTNOWAIT,   /* 6 Lock interruptible no wait in wakeup, data = lockindex */
        RTTEST_LOCKCONT,        /* 7 Continue locking after the wakeup delay */
        RTTEST_UNLOCK,          /* 8 Unlock, data = lockindex */
-       RTTEST_LOCKBKL,         /* 9 Lock BKL */
+       RTTEST_LOCKBKL,         /* 9 Lock BKL */
        RTTEST_UNLOCKBKL,       /* 10 Unlock BKL */
        RTTEST_SIGNAL,          /* 11 Signal other test thread, data = thread id */
        RTTEST_RESETEVENT = 98, /* 98 Reset event counter */
@@ -55,7 +55,6 @@ enum test_opcodes {
 
 static int handle_op(struct test_thread_data *td, int lockwakeup)
 {
-       struct sched_param schedpar;
        int i, id, ret = -EINVAL;
 
        switch(td->opcode) {
@@ -63,17 +62,6 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
        case RTTEST_NOP:
                return 0;
 
-       case RTTEST_SCHEDOT:
-               schedpar.sched_priority = 0;
-               ret = sched_setscheduler(current, SCHED_NORMAL, &schedpar);
-               if (!ret)
-                       set_user_nice(current, 0);
-               return ret;
-
-       case RTTEST_SCHEDRT:
-               schedpar.sched_priority = td->opdata;
-               return sched_setscheduler(current, SCHED_FIFO, &schedpar);
-
        case RTTEST_LOCKCONT:
                td->mutexes[td->opdata] = 1;
                td->event = atomic_add_return(1, &rttest_event);
@@ -310,9 +298,10 @@ static int test_func(void *data)
 static ssize_t sysfs_test_command(struct sys_device *dev, const char *buf,
                                  size_t count)
 {
+       struct sched_param schedpar;
        struct test_thread_data *td;
        char cmdbuf[32];
-       int op, dat, tid;
+       int op, dat, tid, ret;
 
        td = container_of(dev, struct test_thread_data, sysdev);
        tid = td->sysdev.id;
@@ -334,6 +323,21 @@ static ssize_t sysfs_test_command(struct sys_device *dev, const char *buf,
                return -EINVAL;
 
        switch (op) {
+       case RTTEST_SCHEDOT:
+               schedpar.sched_priority = 0;
+               ret = sched_setscheduler(threads[tid], SCHED_NORMAL, &schedpar);
+               if (ret)
+                       return ret;
+               set_user_nice(current, 0);
+               break;
+
+       case RTTEST_SCHEDRT:
+               schedpar.sched_priority = dat;
+               ret = sched_setscheduler(threads[tid], SCHED_FIFO, &schedpar);
+               if (ret)
+                       return ret;
+               break;
+
        case RTTEST_SIGNAL:
                send_sig(SIGHUP, threads[tid], 0);
                break;
@@ -357,8 +361,8 @@ static ssize_t sysfs_test_command(struct sys_device *dev, const char *buf,
 static ssize_t sysfs_test_status(struct sys_device *dev, char *buf)
 {
        struct test_thread_data *td;
+       struct task_struct *tsk;
        char *curr = buf;
-       task_t *tsk;
        int i;
 
        td = container_of(dev, struct test_thread_data, sysdev);