cv_wait
    Kamal R. Prasad 
    kamalpr at gmail.com
       
    Thu Jul  2 19:06:18 UTC 2020
    
    
  
but if i am doing cv_wait() for the first time, should someone be
calling cv_signal for it to proceed?
my algo is something like this in my driver:-
function1()
{
mtx_lock(&sc->sc_mtx);
cv_wait(&sc->sc_cv);
mtx_unlock(&sc->sc_mtx);
....
critical section
....
cv_signal(&sc->sc_cv);
}
function2()
{
mtx_lock(&sc->sc_mtx);
cv_wait(&sc->sc_cv);
mtx_unlock(&sc->sc_mtx);
....
critical section
....
cv_signal(&sc->sc_cv);
}
---------------------
i want to protect critical section. The critical section calls a common
piece of code which has some locks. if i put in locks to guard the cs, it
triggers a call to witness().
Update: i saw an implementation wherein they used a callout to periodically
send a cv_signal(). i could do that but the pt of this implementation is
that cs in either of these functions should not be eecuting at the same
time.
thanks
-kamal
On Thu, Jul 2, 2020 at 10:29 PM Ian Lepore <ian at freebsd.org> wrote:
> On Thu, 2020-07-02 at 21:48 +0530, Kamal R. Prasad wrote:
> > hello,
> >
> > i have written a piece of code in a freebsd driver meant for arm. The
> > first
> > cv_wait(&sc->sc_cv, &sc->sc_mtx);
> > keeps waiting indefinitely. If I use cv_timedwait() instead, it
> > returns
> >
> > EWOULDBLOCK
> >
> >
> > does someone know why this is happening?
> >
> >
> > thanks
> >
> > -kamal
> >
>
> That would imply that nothing is ever calling cv_signal(&sc->sc_cv) or
> cv_broadcast(&sc->sc_cv).
>
> -- Ian
>
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
>
    
    
More information about the freebsd-arm
mailing list