Package: ivtv-source
Version: 0.8.2-2
Severity: normal

This patch nneeds conditionals to make sure it is only applied in 2.6.20
and up, but it is a Works For Me(TM) patch.

Thanks,

-- System Information:
Debian Release: 4.0
  APT prefers testing
  APT policy: (990, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.20-rc5-686
Locale: LANG=en_US.UTF8, LC_CTYPE=en_US.UTF8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_US.UTF8)

Versions of packages ivtv-source depends on:
ii  bzip2                         1.0.3-6    high-quality block-sorting file co
ii  debhelper                     5.0.42     helper programs for debian/rules
ii  dpatch                        2.0.21     patch maintenance system for Debia
ii  module-assistant              0.10.8     tool to make module package creati

ivtv-source recommends no packages.

-- no debconf information
-- 
 -----------------------------------------------------------------
|   ,''`.                                            Stephen Gran |
|  : :' :                                        [EMAIL PROTECTED] |
|  `. `'                        Debian user, admin, and developer |
|    `-                                     http://www.debian.org |
 -----------------------------------------------------------------
diff -x debian -Nru /usr/src/modules/ivtv/driver/ivtv-driver.c 
modules/ivtv/driver/ivtv-driver.c
--- /usr/src/modules/ivtv/driver/ivtv-driver.c  2006-11-25 21:20:43.000000000 
+0000
+++ modules/ivtv/driver/ivtv-driver.c   2007-01-28 15:10:00.000000000 +0000
@@ -696,7 +696,7 @@
                IVTV_ERR("Could not create VBI workqueue\n");
                return -1;
        }
-       INIT_WORK(&itv->vbi_work_queue, vbi_work_handler, itv);
+       INIT_DELAYED_WORK(&itv->vbi_work_queue, vbi_work_handler);
 #else
        INIT_TQUEUE(&itv->vbi_work_queue, vbi_work_handler, itv);
 #endif
diff -x debian -Nru /usr/src/modules/ivtv/driver/ivtv-driver.h 
modules/ivtv/driver/ivtv-driver.h
--- /usr/src/modules/ivtv/driver/ivtv-driver.h  2006-11-19 12:07:58.000000000 
+0000
+++ modules/ivtv/driver/ivtv-driver.h   2007-01-28 15:07:02.000000000 +0000
@@ -1016,7 +1016,7 @@
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
        struct workqueue_struct *vbi_work_queues;
-       struct work_struct vbi_work_queue;
+       struct delayed_work vbi_work_queue;
 #else
        struct tq_struct vbi_work_queue;
 #endif
diff -x debian -Nru /usr/src/modules/ivtv/driver/ivtv-kthreads.c 
modules/ivtv/driver/ivtv-kthreads.c
--- /usr/src/modules/ivtv/driver/ivtv-kthreads.c        2006-11-19 
12:07:58.000000000 +0000
+++ modules/ivtv/driver/ivtv-kthreads.c 2007-01-28 15:35:21.000000000 +0000
@@ -345,9 +345,9 @@
        return bytes_received;
 }
 
-static void enc_work_handler(void *arg)
+static void enc_work_handler(struct work_struct *arg)
 {
-       struct ivtv *itv = (struct ivtv *)arg;
+       struct ivtv *itv = container_of(arg, struct ivtv, vbi_work_queue.work);
 
        /* VIDEO or VBI */
         set_bit(IVTV_F_T_ENC_RUNNING, &itv->t_flags);
@@ -359,9 +359,9 @@
        return;
 }
 
-static void enc_vbi_work_handler(void *arg)
+static void enc_vbi_work_handler(struct work_struct *arg)
 {
-        struct ivtv *itv = (struct ivtv *)arg;
+       struct ivtv *itv = container_of(arg, struct ivtv, vbi_work_queue.work);
 
         /* ENC VBI */
         set_bit(IVTV_F_T_ENC_VBI_RUNNING, &itv->t_flags);
@@ -373,9 +373,9 @@
         return;
 }
 
-static void dec_vbi_work_handler(void *arg)
+static void dec_vbi_work_handler(struct work_struct *arg)
 {
-        struct ivtv *itv = (struct ivtv *)arg;
+       struct ivtv *itv = container_of(arg, struct ivtv, vbi_work_queue.work);
 
         /* DEC VBI */
         set_bit(IVTV_F_T_DEC_VBI_RUNNING, &itv->t_flags);
@@ -387,9 +387,9 @@
         return;
 }
 
-static void dec_work_handler(void *arg)
+static void dec_work_handler(struct work_struct *arg)
 {
-       struct ivtv *itv = (struct ivtv *)arg;
+       struct ivtv *itv = container_of(arg, struct ivtv, vbi_work_queue.work);
        int type = IVTV_DEC_STREAM_TYPE_MPG;
        struct ivtv_stream *stream;
        int ret = -1;
@@ -1080,7 +1080,7 @@
                if (atomic_read(&itv->dec_thread_running) == 0)
                        break;
 
-               dec_work_handler(itv);
+               dec_work_handler(&itv->vbi_work_queue.work);
        }
        itv->dec_thread_pid = 0;
        return 0;
@@ -1138,7 +1138,7 @@
                if (atomic_read(&itv->enc_thread_running) == 0)
                        break;
 
-               enc_work_handler(itv);
+               enc_work_handler(&itv->vbi_work_queue.work);
        }
        itv->enc_thread_pid = 0;
        return 0;
@@ -1196,7 +1196,7 @@
                 if (atomic_read(&itv->enc_vbi_thread_running) == 0)
                         break;
 
-                enc_vbi_work_handler(itv);
+                enc_vbi_work_handler(&itv->vbi_work_queue.work);
         }
         itv->enc_vbi_thread_pid = 0;
         return 0;
@@ -1254,7 +1254,7 @@
                 if (atomic_read(&itv->dec_vbi_thread_running) == 0)
                         break;
 
-                dec_vbi_work_handler(itv);
+                dec_vbi_work_handler(&itv->vbi_work_queue.work);
         }
         itv->dec_vbi_thread_pid = 0;
         return 0;
diff -x debian -Nru /usr/src/modules/ivtv/driver/ivtv-vbi.c 
modules/ivtv/driver/ivtv-vbi.c
--- /usr/src/modules/ivtv/driver/ivtv-vbi.c     2006-04-19 22:34:16.000000000 
+0100
+++ modules/ivtv/driver/ivtv-vbi.c      2007-01-28 15:34:33.000000000 +0000
@@ -79,7 +79,7 @@
 void vbi_schedule_work(struct ivtv *itv)
 {
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-       queue_work(itv->vbi_work_queues, &itv->vbi_work_queue);
+       queue_delayed_work(itv->vbi_work_queues, &itv->vbi_work_queue, 0);
 #else
        ivtv_schedule_work(&itv->vbi_work_queue);
 #endif
@@ -593,9 +593,9 @@
        vbi_schedule_work(itv);
 }
 
-void vbi_work_handler(void *arg)
+void vbi_work_handler(struct work_struct *arg)
 {
-       struct ivtv *itv = arg;
+       struct ivtv *itv = container_of(arg, struct ivtv, vbi_work_queue.work);
        struct v4l2_sliced_vbi_data data;
        int count = 0;
 
diff -x debian -Nru /usr/src/modules/ivtv/driver/ivtv-vbi.h 
modules/ivtv/driver/ivtv-vbi.h
--- /usr/src/modules/ivtv/driver/ivtv-vbi.h     2005-11-04 23:25:13.000000000 
+0000
+++ modules/ivtv/driver/ivtv-vbi.h      2007-01-28 15:28:10.000000000 +0000
@@ -26,5 +26,5 @@
 void ivtv_disable_vbi(struct ivtv *itv);
 void ivtv_set_vbi(unsigned long arg);
 void vbi_setup_lcr(struct ivtv *itv, int set, int is_pal, struct 
v4l2_sliced_vbi_format *fmt);
-void vbi_work_handler(void *arg);
+void vbi_work_handler(struct work_struct *arg);
 void vbi_schedule_work(struct ivtv *itv);

Attachment: signature.asc
Description: Digital signature

Reply via email to