]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/kthread.c
LinCAN partial update of thread helper support for 2.6.27+ kernels.
[lincan.git] / lincan / src / kthread.c
index d2531b961e6325785297f7fa26f0c6f373255518..ae43c306384a88f8878fda263d3c9f515449f6e0 100644 (file)
@@ -1,5 +1,7 @@
-#include <linux/config.h>
 #include <linux/version.h>
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17))
+#include <linux/config.h>
+#endif
 
 #if defined(MODVERSIONS)
 #include <linux/modversions.h>
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
   #include <linux/tqueue.h>
 #else
-  #include <linux/devfs_fs_kernel.h>
+  #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17))
+    #include <linux/devfs_fs_kernel.h>
+  #endif
 #endif
 
 #include <linux/wait.h>
 #include <linux/signal.h>
 #include <linux/interrupt.h>
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27))
+  #include <asm/semaphore.h>
+#else
+  #include <linux/semaphore.h>
+#endif
 
-#include <asm/semaphore.h>
 #include <linux/smp_lock.h>
 
 #include "../include/kthread.h"
@@ -47,7 +55,7 @@ void start_kthread(void (*func)(kthread_t *), kthread_t *kthread)
        in the down operation below until the thread has reached
        the up() operation.
     */
-    init_MUTEX_LOCKED(&kthread->startstop_sem);
+    sema_init(&kthread->startstop_sem, 0);
 
     /* store the function to be executed in the data passed to
        the launcher */
@@ -96,10 +104,10 @@ void stop_kthread(kthread_t *kthread)
        will unlock it. As soon as we see the semaphore
        unlocked, we know that the thread has exited.
     */
-    init_MUTEX_LOCKED(&kthread->startstop_sem);
+    sema_init(&kthread->startstop_sem,0);
 
     /* We need to do a memory barrier here to be sure that
-       the flags are visible on all CPUs. 
+       the flags are visible on all CPUs.
     */
     mb();
 
@@ -107,7 +115,7 @@ void stop_kthread(kthread_t *kthread)
     kthread->terminate = 1;
 
     /* We need to do a memory barrier here to be sure that
-       the flags are visible on all CPUs. 
+       the flags are visible on all CPUs.
     */
     mb();
     kill_proc(kthread->thread->pid, SIGKILL, 1);