This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: AW: AW: Blocking restricted in DSRs
- From: Nick Garnett <nickg at ecoscentric dot com>
- To: "Neundorf, Alexander" <Alexander dot Neundorf at jenoptik dot com>
- Cc: <ecos-discuss at sources dot redhat dot com>
- Date: 27 Jul 2004 11:02:38 +0100
- Subject: Re: AW: AW: [ECOS] Blocking restricted in DSRs
- References: <5A8A17126B73AC4C83968F6C4505E3C5E3ECCB@JO-EX01.JENOPTIK.NET>
"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