Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 02 Jul 2020 13:07:29 -0600
From:      Ian Lepore <ian@freebsd.org>
To:        kamalp@acm.org
Cc:        freebsd-arm@freebsd.org
Subject:   Re: cv_wait
Message-ID:  <28698f3e3db608dceee910a8ba62ad7b6be0769f.camel@freebsd.org>
In-Reply-To: <CAK=yUGLvZ7uM=pTNrODnTgw6NStT4gHExsTDkrYTP_rQBV1C-A@mail.gmail.com>
References:  <CAK=yUGLoM1YWX5yxsboKqaCMr2jKGgtJ0a-CVVsfeEO3SpsYLQ@mail.gmail.com> <ef01153a05887b10a443c71cb42aff6180ae7f8f.camel@freebsd.org> <CAK=yUGLvZ7uM=pTNrODnTgw6NStT4gHExsTDkrYTP_rQBV1C-A@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2020-07-03 at 00:36 +0530, Kamal R. Prasad wrote:
> 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
> 

A condition variable doesn't work the way you're trying to use it.

What is the complaint from witness?  What type of locks are used in the
common code that causes a complaint?  Are any of these functions
involved called from interrupt handlers (that also imposes restrictions
on what kind of locking you can do)?

-- Ian





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?28698f3e3db608dceee910a8ba62ad7b6be0769f.camel>