X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/13eddf636097e954524da50eff3acd9f9ac24e35..fb1e8444b02cd7ae2536adc1bad79f5e01382767:/lincan/src/kthread.c diff --git a/lincan/src/kthread.c b/lincan/src/kthread.c index cce9ff5..a1563ce 100644 --- a/lincan/src/kthread.c +++ b/lincan/src/kthread.c @@ -1,5 +1,7 @@ -#include #include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)) +#include +#endif #if defined(MODVERSIONS) #include @@ -10,15 +12,21 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40)) #include #else - #include + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)) + #include + #endif #endif #include #include #include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)) + #include +#else + #include +#endif -#include #include #include "../include/kthread.h" @@ -99,7 +107,7 @@ void stop_kthread(kthread_t *kthread) 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,10 +115,16 @@ 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(); +#warning The local code for kernel thread support is not more needed for recent 2.6 kernels +#warning and code should be modified to emulate same interface for older kernels +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) kill_proc(kthread->thread->pid, SIGKILL, 1); +#else /* >= 2,6,20 */ + send_sig(SIGKILL, kthread->thread, 1); +#endif /* >= 2,6,20 */ /* block till thread terminated */ down(&kthread->startstop_sem); @@ -121,7 +135,9 @@ void stop_kthread(kthread_t *kthread) /* now we are sure the thread is in zombie state. We notify keventd to clean the process up. */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)) kill_proc(2, SIGCHLD, 1); +#endif /* >= 2,6,20 */ }