Messages in this thread | | | Date | Sat, 6 Mar 1999 18:03:33 +0100 (CET) | From | Andrea Arcangeli <> | Subject | Re: [patch] sleep_on() fixes, 2.2.3-1 |
| |
On Sat, 6 Mar 1999, Ingo Molnar wrote:
> >On Sat, 6 Mar 1999, Andrea Arcangeli wrote: > >> >+#define __wait_event_interruptible(wq, condition) \ >> >> Here I think we could add a third param to the macro, that will be the >> retval in the interrupted case. It's zero cost and looks nicer to me. > >the macro returns a value just like a function. I chose it because we >usually prefer return values instead of side-effects. And it's not >mandatory to use the return value.
I think you mistaken my point. This time I'll write C code instead of words ;)
+#define __wait_event_interruptible(wq, condition, error) \ +({ \ + int __ret = 0; \ + struct wait_queue __wait; \ + \ + __wait.task = current; \ + add_wait_queue(&wq, &__wait); \ + for (;;) { \ + current->state = TASK_INTERRUPTIBLE; \ + if (condition) \ + break; \ + if (signal_pending(current)) { \ + __ret = (error); \ + break; \ + } \ + schedule(); \ + } \ + current->state = TASK_RUNNING; \ + remove_wait_queue(&wq, &__wait); \ + __ret; \ +})
Andrea Arcangeli
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |