unisys: use simpler kthread_ API
authorDevendra Naga <devendra.aaru@gmail.com>
Thu, 19 Feb 2015 19:08:31 +0000 (14:08 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Feb 2015 01:23:46 +0000 (17:23 -0800)
The code does the checks on should_stop variable in the kernel
threads. The uisthread_stop function sets the should_stop and calls
KILL (eventually kill_pid) to stop the thread.

The checking of should_stop variable can be replaced to a call to
kthread_should_stop function and the setting of the should_stop and
a call to KILL can be replaced with kthread_stop function.

Cc: Ken Cox <jkc@redhat.com>
Cc: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Devendra Naga <devendra.aaru@gmail.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/uislib/uisthread.c

index c5c68cb1286b617230674ebdc73d232568fab895..20a2a1bb1ba4112654bf1f798bf5b90be9110286 100644 (file)
@@ -41,7 +41,6 @@ int
 uisthread_start(struct uisthread_info *thrinfo,
                int (*threadfn)(void *), void *thrcontext, char *name)
 {
-       thrinfo->should_stop = 0;
        /* used to stop the thread */
        init_completion(&thrinfo->has_stopped);
        thrinfo->task = kthread_run(threadfn, thrcontext, name);
@@ -58,24 +57,19 @@ EXPORT_SYMBOL_GPL(uisthread_start);
 void
 uisthread_stop(struct uisthread_info *thrinfo)
 {
-       int ret;
        int stopped = 0;
 
        if (thrinfo->id == 0)
                return;         /* thread not running */
 
        LOGINF("uisthread_stop stopping id:%d\n", thrinfo->id);
-       thrinfo->should_stop = 1;
-       ret = KILL(thrinfo->id, SIGHUP, 1);
-       if (ret) {
-               LOGERR("unable to signal thread %d\n", ret);
-       } else {
-               /* give up if the thread has NOT died in 1 minute */
-               if (wait_for_completion_timeout(&thrinfo->has_stopped, 60 * HZ))
-                       stopped = 1;
-               else
-                       LOGERR("timed out trying to signal thread\n");
-       }
+       kthread_stop(thrinfo->task);
+       /* give up if the thread has NOT died in 1 minute */
+       if (wait_for_completion_timeout(&thrinfo->has_stopped, 60 * HZ))
+               stopped = 1;
+       else
+               LOGERR("timed out trying to signal thread\n");
+
        if (stopped) {
                LOGINF("uisthread_stop stopped id:%d\n", thrinfo->id);
                thrinfo->id = 0;