> >This code looks strange (before and after your change). > >Why isn't this a simple > > > > wait_event_interruptible_timeout(&btv->i2c_queue, btv->i2c_done, > > msecs_to_jiffies(20)); Probably simply because the code is older than wait_event_interruptible_timeout() ... > --- bttv-i2c.c.orig 2005-03-26 07:28:14.000000000 +0400 > +++ bttv-i2c.c 2005-04-23 19:25:48.000000000 +0400 > @@ -135,10 +135,12 @@ bttv_i2c_wait_done(struct bttv *btv) > DECLARE_WAITQUEUE(wait, current); > int rc = 0; > > - add_wait_queue(&btv->i2c_queue, &wait); > +/* add_wait_queue(&btv->i2c_queue, &wait); > if (0 == btv->i2c_done) > msleep_interruptible(20); > remove_wait_queue(&btv->i2c_queue, &wait); > +*/ > + wait_event_interruptible_timeout(btv->i2c_queue, btv->i2c_done, msecs_to_jiffies(6)); Looks ok to me. Gerd -- #define printk(args...) fprintf(stderr, ## args)