This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: AW: AW: Blocking restricted in DSRs


"Neundorf, Alexander" <Alexander.Neundorf@jenoptik.com> writes:

> ...
> > > Ok, the docu says sending signals to condition variables is ok from
> > > a DSR. But AFAIK this has always be done together with locking the
> > > associated mutex first... from the DSR then. But the docu also says
> > > using cyg_mutex_lock() should be used only from thread context, not
> > > from DSR. So, what's the right way then ?
> > 
> > It also says that cyg_mutex_signal() can be called without locking the
> > associated mutex first. This is how it must be used from the DSR.
> 
> Ok, and what to do with the variables which are modified and which
> should be protected by the mutex ?  E.g. if I have a queue which is
> filled by the DSR, and which is checked by the thread which waits
> for the signal. Actually I have to ensure that the "take element out
> of queue" by the thread is protected against the "put element into
> queue" by the DSR.  Do I have to use cyg_scheduler_lock() in the
> thread to achieve this ?

Yes. Take a look at the generic serial driver for an example of how to
do this.

-- 
Nick Garnett                    eCos Kernel Architect
http://www.ecoscentric.com/     The eCos and RedBoot experts


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]