lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 21 Feb 2010 16:01:07 +0100
From:	Thomas Hellstrom <thomas@...pmail.org>
To:	Rafał Miłecki <zajec5@...il.com>
CC:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	dri-devel@...ts.sourceforge.net
Subject: Re: [PATCH][RFC] time: add wait_interruptible_timeout macro to sleep
 (w.	timeout) until wake_up

Rafał Miłecki wrote:
> Signed-off-by: Rafał Miłecki <zajec5@...il.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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ