From: Thomas Hellstrom <thomas@shipmail.org>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
dri-devel@lists.sourceforge.net
Subject: Re: [PATCH][RFC] time: add wait_interruptible_timeout macro to sleep (w. timeout) until wake_up
Date: Sun, 21 Feb 2010 16:01:07 +0100 [thread overview]
Message-ID: <4B814AB3.1030404@shipmail.org> (raw)
In-Reply-To: <1266761422-2921-1-git-send-email-zajec5@gmail.com>
Rafał Miłecki wrote:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
> We try to implement some PM in radeon KMS and we need to sync with VLBANK for
> reclocking engine/memory. The easiest and cleanest way seems to be sleeping in
> timer handler just before reclocking. Then our IRQ handler calls wake_up and we
> continue reclocking.
>
> As you see our sleeping is condition-less, we just wait for waking up queue.
>
> We hope this waking will happen from IRQ handler, but for less-happy case we
> also use some timeout (this will probably cause some single corruption, but
> we can live with it).
>
> Following macro is soemthing that seems to work fine for us, but instead
> introducing this to radeon KMS only, I'd like to propose adding this to whole
> wait.h. Do you this it's something we should place there? Can someone take this
> patch for me? Or maybe you find this rather useless and we should keep this
> marco locally?
> ---
> include/linux/wait.h | 25 +++++++++++++++++++++++++
> 1 files changed, 25 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/wait.h b/include/linux/wait.h
> index a48e16b..998475b 100644
> --- a/include/linux/wait.h
> +++ b/include/linux/wait.h
> @@ -332,6 +332,31 @@ do { \
> __ret; \
> })
>
> +/**
> + * wait_interruptible_timeout - sleep until a waitqueue is woken up
> + * @wq: the waitqueue to wait on
> + * @timeout: timeout, in jiffies
> + *
> + * The process is put to sleep (TASK_INTERRUPTIBLE) until the waitqueue
> + * @wq is woken up. It can be done manually with wake_up or will happen
> + * if timeout elapses.
> + *
> + * The function returns 0 if the @timeout elapsed, remaining jiffies
> + * if workqueue was waken up earlier.
> + */
> +#define wait_interruptible_timeout(wq, timeout) \
> +({ \
> + long __ret = timeout; \
> + \
> + DEFINE_WAIT(__wait); \
> + prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \
> + if (!signal_pending(current)) \
> + __ret = schedule_timeout(__ret); \
> + finish_wait(&wq, &__wait); \
> + \
> + __ret; \
> +})
> +
> #define __wait_event_interruptible_exclusive(wq, condition, ret) \
> do { \
> DEFINE_WAIT(__wait); \
>
What about msleep_interruptible in <linux/delay.h> ?
/Thomas
next prev parent reply other threads:[~2010-02-21 15:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-21 14:10 [PATCH][RFC] time: add wait_interruptible_timeout macro to sleep (w. timeout) until wake_up Rafał Miłecki
2010-02-21 15:01 ` Thomas Hellstrom [this message]
2010-02-21 15:50 ` Rafał Miłecki
2010-02-24 22:33 ` Rafał Miłecki
2010-02-26 10:38 ` Rafał Miłecki
2010-02-26 11:55 ` Thomas Gleixner
2010-02-26 12:16 ` Rafał Miłecki
2010-02-26 16:14 ` Andrew Morton
2010-02-26 17:33 ` Rafał Miłecki
2010-02-26 19:01 ` Ville Syrjälä
2010-02-27 9:33 ` Rafał Miłecki
2010-03-01 16:37 ` Michel Dänzer
2010-03-02 20:32 ` Rafał Miłecki
2010-02-27 1:04 ` Linus Torvalds
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B814AB3.1030404@shipmail.org \
--to=thomas@shipmail.org \
--cc=dri-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=zajec5@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox