public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* schedule inside spin_lock_irqsave?
@ 2010-05-30 14:52 Richard Zidlicky
  2010-05-30 15:24 ` Jiri Slaby
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Zidlicky @ 2010-05-30 14:52 UTC (permalink / raw)
  To: linux-kernel

Hi,

came across following snippet of code (2.6.34:drivers/media/dvb/siano/smscoreapi.c) and 
since prepare_to_wait is new for me I am wondering if this is can work?

struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev)
{
	struct smscore_buffer_t *cb = NULL;
	unsigned long flags;

	DEFINE_WAIT(wait);

	spin_lock_irqsave(&coredev->bufferslock, flags);

	/* This function must return a valid buffer, since the buffer list is
	 * finite, we check that there is an available buffer, if not, we wait
	 * until such buffer become available.
	 */

	prepare_to_wait(&coredev->buffer_mng_waitq, &wait, TASK_INTERRUPTIBLE);

	if (list_empty(&coredev->buffers))
		schedule();

	finish_wait(&coredev->buffer_mng_waitq, &wait);

	cb = (struct smscore_buffer_t *) coredev->buffers.next;
	list_del(&cb->entry);

	spin_unlock_irqrestore(&coredev->bufferslock, flags);

	return cb;
}

Regards
Richard

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

end of thread, other threads:[~2010-07-06 12:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-30 14:52 schedule inside spin_lock_irqsave? Richard Zidlicky
2010-05-30 15:24 ` Jiri Slaby
2010-05-30 15:32   ` Jiri Slaby
2010-06-01 17:17   ` Richard Zidlicky
2010-06-06 12:43   ` [PATCH 2.6.34] schedule inside spin_lock_irqsave Richard Zidlicky
2010-06-06 17:51     ` Jiri Slaby
2010-06-07 13:00       ` Richard Zidlicky
2010-07-06 12:40         ` Mauro Carvalho Chehab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox