This is the mail archive of the ecos-discuss@sourceware.org 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: Synchronization primitive for DSRs


Hi

I searching for a kind of mutex which also blocks a specific DSRs. Mutexes
doesn't work within DSRs, so the only way to share resources which are used
by a thread and a DSR is to use scheduler_lock() which blocks the whole
system.

Take a look at


http://ecos.sourceware.org/docs-latest/ref/devapi-synchronization.html

It suggests to use cyg_drv_dsr_lock()/cyg_drv_dsr_unlock(). This
should, it think, leave the scheduler running. However, in RTOSs, most
things are triggered by ISR, which naturally post DSR, and if you have
DSRs locked, events are just going to get queued up and never actually
processed. So think about deadlocks, try not to make any blocking
calls while you have DSR locked etc...

Take a look at the serial device driver layers for examples of how to
use these locks.

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?


Bye...


-- 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]