This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: Synchronization primitive for DSRs
- From: Ivan Djelic <ivan dot djelic at parrot dot fr>
- To: Andrew Lunn <andrew at lunn dot ch>
- Cc: Stefan Sommerfeld <sommerfeld at mikrom dot de>, ecos-discuss at ecos dot sourceware dot org
- Date: Fri, 1 Dec 2006 13:46:47 +0100
- Subject: Re: [ECOS] Synchronization primitive for DSRs
- References: <20061130154023.GG5245@lunn.ch>
On Thu, Nov 30, 2006 at 04:40:23PM +0100, Andrew Lunn wrote:
> On Thu, Nov 30, 2006 at 04:21:58PM +0100, Stefan Sommerfeld wrote:
> >
> > It looks like the cyg_drv_dsr_lock() will lock all DSRs and so it will stop
> > multitasking and any other DSRs to run. That's not what I'm searching for.
> > Any other solution?
>
> It should not stop multi-tasking. The scheduler can still run and do
> task switches. But all DSR are blocked. So, for example, round-robin
> will not happen, since that needs a timer tick, and so a DSR. All
> your device driver IO stops etc. But plain thread/thread interactions
> should keep working.
Correct me if I am wrong, but unless you build a kernel-less configuration,
cyg_drv_dsr_lock() is just an alias for cyg_scheduler_lock().
Therefore it prevents thread scheduling as well as other DSR processing.
Ivan
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss