El Tue, Apr 28, 2009 at 03:29:27PM +0530 nidhi mittal ha dit:
> i am stuck here confused how to get out of this
>
> i have this code kind of producer consumer code where consumer waits on
> wait queue
> if some particular list of elements is empty
>
> 1.while(count=count_request < = 0)
> 2.{
> 3.
> 4.wait_event_interruptible(wq,count>0)
> 5.
> 6.}
one problem is that count is a variable and will never have a
value > 0 once you entered the loop. in consequence the wakup
condition will never be fullfilled, even if count_request() would
return a value > 0
i don't know your real code, but it looks to me that the while loop
isn't what you really want. i suppose you just mean:
wait_event_interruptible(wq, count_request() > 0)
the main difference to your version is that the element count is
reevaluated by calling count_request() when the process wakes up.
> there is a function
>
> 7. count_request()
> 8. {
> 9 take spinlock on list of elements
> 10. count elements
> 11. return count
> 12 . release spinlock
> 13 }
i hope in the real code you release the spinlock before returning from
the function
--
Matthias Kaehlcke
Embedded Linux Engineer
Barcelona
You must have a plan. If you don't have a plan,
you'll become part of somebody else's plan
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ