From 01dbc609534dc68b8890267b95c8a1efcd17437d Mon Sep 17 00:00:00 2001 From: FLN Date: Mon, 23 May 2011 01:02:20 +0200 Subject: [PATCH] use mutex instead of BKL if kernel version is greater than 2.6.38 the BKL got removed with kernel version 2.6.39 and therefore we have to use a proper locking mechanism --- af903x-fe.c | 12 +++++++++--- af903x.h | 6 +++++- usb2impl.c | 1 - 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/af903x-fe.c b/af903x-fe.c index 6f36a68..a1d1077 100644 --- a/af903x-fe.c +++ b/af903x-fe.c @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -11,7 +10,7 @@ #define A333_FREQ_MIN 44250000 #define A333_FREQ_MAX 867250000 - +DEFINE_MUTEX(mutex); static int alwayslock; // default to 0 module_param(alwayslock, int, 0644); @@ -678,7 +677,11 @@ static int af903x_monitor_thread_func(void *data) deb_data("- Enter %s Function -\n",__FUNCTION__); if( !state ) return -1; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) lock_kernel(); +#else + mutex_lock(&mutex); +#endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,61) daemonize(); sigfillset(¤t->blocked); @@ -689,8 +692,11 @@ static int af903x_monitor_thread_func(void *data) #endif siginitsetinv(¤t->blocked, sigmask(SIGKILL)|sigmask(SIGINT)|\ sigmask(SIGTERM)); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) unlock_kernel(); - +#else + mutex_unlock(&mutex); +#endif while(!state->thread_should_stop && !signal_pending(current)) { DWORD dwError; diff --git a/af903x.h b/af903x.h index 203ff51..b2b35e3 100644 --- a/af903x.h +++ b/af903x.h @@ -9,7 +9,12 @@ #include #include #include +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39) #include +#else +#include +#endif #include #include #include @@ -19,7 +24,6 @@ #include "firmware.h" #include "type.h" #include "Common.h" -#include #include "debug.h" #define ENABLE_TEST_FUNCTION 0 diff --git a/usb2impl.c b/usb2impl.c index a3a30f9..3cf8b64 100644 --- a/usb2impl.c +++ b/usb2impl.c @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include -- 1.7.5.2