diff options
Diffstat (limited to 'v4l')
-rw-r--r-- | v4l/compat.h | 2 | ||||
-rwxr-xr-x | v4l/scripts/make_config_compat.pl | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/v4l/compat.h b/v4l/compat.h index 56eb30853..11dc57109 100644 --- a/v4l/compat.h +++ b/v4l/compat.h @@ -9,7 +9,7 @@ * non-delayed work and struct delayed_work was created for delayed work. This * will rename the structures. Hopefully no one will decide to name something * delayed_work in the same context as something named work_struct. */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20) +#ifdef NEED_DELAYED_WORK #define delayed_work work_struct #define INIT_DELAYED_WORK(a,b,c) INIT_WORK(a,b,c) #endif diff --git a/v4l/scripts/make_config_compat.pl b/v4l/scripts/make_config_compat.pl index 7c7841459..1f5b8bae6 100755 --- a/v4l/scripts/make_config_compat.pl +++ b/v4l/scripts/make_config_compat.pl @@ -338,6 +338,26 @@ sub check_bitops() $out.= "\n#define NEED_BITOPS 1\n"; } +sub check_delayed_work() +{ + my @files = ( "$kdir//include/linux/workqueue.h" ); + + foreach my $file ( @files ) { + open IN, "<$file" or die "File not found: $file"; + while (<IN>) { + if (m/struct\s+delayed_work/) { + close IN; + # definition found. No need for compat + return; + } + } + close IN; + } + + # definition not found. This means that we need compat + $out.= "\n#define NEED_DELAYED_WORK 1\n"; +} + sub check_other_dependencies() { check_spin_lock(); @@ -357,6 +377,7 @@ sub check_other_dependencies() check_poll_schedule(); check_snd_BUG_ON(); check_bitops(); + check_delayed_work(); } # Do the basic rules |