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]

Re: bypass DSR, sem_post from ISR



Phung Te Ha <phungte@yahoo.com> writes:

> Hi everyone,
> 
> I have an interrupt handling which needs reschedule
> (cyg_thread_delay and mutex_lock) so I have the real
> service in a thread.
> 
> My question is that is it safe to call cyg_sem_post
> directly from the ISR and start my service thread
> rather than start the DSR and wait for this one to
> call cyg_sem_post?

No.

You should understand that the delay to calling the DSR is usually zero.
DSRs are called during the return-from-interrupt sequence - if it is safe
to do so.

DSRs are only delayed if the thread that was interrupted had locked the
scheduler for some other reason - such as doing scheduling operations
itself.  If all your threads are asleep, or just doing "calculations"
ie. not calls in to eCos' scheduler, then DSRs will certainly run
immediately, right after the ISR.

	- Huge


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