linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* question on macros in wait.h
@ 2003-03-19 17:47 Oliver Neukum
  0 siblings, 0 replies; 3+ messages in thread
From: Oliver Neukum @ 2003-03-19 17:47 UTC (permalink / raw)
  To: linux-kernel

Hi,

is there some deeper reason that there's no macro for waiting
uninterruptablely with a timeout? Or did just nobody feel a need
as yet?

	Regards
		Oliver


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: question on macros in wait.h
  2003-03-21  6:52 David Brownell
@ 2003-03-21 11:38 ` Oliver Neukum
  0 siblings, 0 replies; 3+ messages in thread
From: Oliver Neukum @ 2003-03-21 11:38 UTC (permalink / raw)
  To: David Brownell; +Cc: linux-kernel

Am Freitag, 21. März 2003 07:52 schrieb David Brownell:
>   > is there some deeper reason that there's no macro for waiting
>   > uninterruptablely with a timeout? Or did just nobody feel a need
>   > as yet?
>
> Those macros seem to have moved out of <linux/sched.h> (2.4)
> and wait_event_interruptible_timeout() was added about 6
> months ago; the changelog entry says it was for smbfs.
> So I'd guess "no need yet".
>
> Here's an updated version of your patch, now using the same
> calling convention that the other two "can return 'early'"
> calls there provide.  It's behaved in my testing, to replace the
> chaos in the usb synchronous call wrappers.

Much better than my version.

	Regards
		Oliver


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: question on macros in wait.h
@ 2003-03-21  6:52 David Brownell
  2003-03-21 11:38 ` Oliver Neukum
  0 siblings, 1 reply; 3+ messages in thread
From: David Brownell @ 2003-03-21  6:52 UTC (permalink / raw)
  To: Oliver Neukum; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 588 bytes --]


  > is there some deeper reason that there's no macro for waiting
  > uninterruptablely with a timeout? Or did just nobody feel a need
  > as yet?

Those macros seem to have moved out of <linux/sched.h> (2.4)
and wait_event_interruptible_timeout() was added about 6
months ago; the changelog entry says it was for smbfs.
So I'd guess "no need yet".

Here's an updated version of your patch, now using the same
calling convention that the other two "can return 'early'"
calls there provide.  It's behaved in my testing, to replace the
chaos in the usb synchronous call wrappers.

- Dave


[-- Attachment #2: sched3.patch --]
[-- Type: text/plain, Size: 962 bytes --]

--- 1.7/include/linux/wait.h	Sun Nov 17 12:30:14 2002
+++ edited/include/linux/wait.h	Thu Mar 20 21:57:52 2003
@@ -173,6 +173,32 @@
 	__ret;								\
 })
 
+#define __wait_event_timeout(wq, condition, ret)			\
+do {									\
+	wait_queue_t __wait;						\
+	init_waitqueue_entry(&__wait, current);				\
+									\
+	add_wait_queue(&wq, &__wait);					\
+	for (;;) {							\
+		set_current_state(TASK_UNINTERRUPTIBLE);		\
+		if (condition)						\
+			break;						\
+		ret = schedule_timeout(ret);				\
+		if (!ret)						\
+			break;						\
+	}								\
+	current->state = TASK_RUNNING;					\
+	remove_wait_queue(&wq, &__wait);				\
+} while (0)
+
+#define wait_event_timeout(wq, condition, timeout)			\
+({									\
+	long __ret = timeout;						\
+	if (!(condition))						\
+		__wait_event_timeout(wq, condition, __ret);		\
+	__ret;								\
+})
+	
 #define __wait_event_interruptible_timeout(wq, condition, ret)		\
 do {									\
 	wait_queue_t __wait;						\

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-03-21 11:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-19 17:47 question on macros in wait.h Oliver Neukum
2003-03-21  6:52 David Brownell
2003-03-21 11:38 ` Oliver Neukum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).