--- zzzz-none-000/linux-2.6.28.10/kernel/sched.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/kernel/sched.c 2009-12-14 14:57:12.000000000 +0000 @@ -4746,9 +4746,9 @@ static inline long __sched do_wait_for_common(struct completion *x, long timeout, int state) { + /*--- printk("entering do_wait_for_common timeout=%ld \n", timeout); ---*/ if (!x->done) { DECLARE_WAITQUEUE(wait, current); - wait.flags |= WQ_FLAG_EXCLUSIVE; __add_wait_queue_tail(&x->wait, &wait); do { @@ -4758,7 +4758,9 @@ } __set_current_state(state); spin_unlock_irq(&x->wait.lock); - timeout = schedule_timeout(timeout); + /*--- printk("before schedule_timeout\n"); ---*/ + timeout = schedule_timeout(timeout); /* hier haengt er */ + /*--- printk("schedule_timeout passed!\n"); ---*/ spin_lock_irq(&x->wait.lock); } while (!x->done && timeout); __remove_wait_queue(&x->wait, &wait); @@ -4773,7 +4775,6 @@ wait_for_common(struct completion *x, long timeout, int state) { might_sleep(); - spin_lock_irq(&x->wait.lock); timeout = do_wait_for_common(x, timeout, state); spin_unlock_irq(&x->wait.lock);