[ECOS] How to reset the timeout on a thread waiting for a flag

Jonathan Larmour jifl@eCosCentric.com
Tue Jan 28 04:36:00 GMT 2003


Fabrice Gautier wrote:
> Hi,
> 
> Here is what i want to do:
> 
> I have a thread starting an operation and waiting for it to finish. The
> operation result in a series of interrupts. The thread waits on a flag, and
> the ISR will eventually set the flag when the operation is done, to wake up
> the thread. 

DSR I hope :-).

> I also want a timeout. But not a total timeout value for the total operation
> but a timeout based on the interrupt activity. ie if there is no more
> interrupt for 1/2sec then i want to timeout.
> 
> So is ther any function to reset the thread timer. 

Not exported in C (nor should it be really). You could look in the C++ 
headers, but there be dragons.

But I would imagine an alternative way to do this is to use two flag bits 
with cyg_flag_timed_wait() - one bit set on each interrupt, and the other 
when the operation completes. It's used with CYG_FLAG_WAITMODE_OR.

Then when the thread wakes up, it checks why it woke up, and if necessary 
waits again for the operation to complete.

Jifl
-- 
eCosCentric       http://www.eCosCentric.com/       <info@eCosCentric.com>
--[ "You can complain because roses have thorns, or you ]--
--[  can rejoice because thorns have roses." -Lincoln   ]-- Opinions==mine


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



More information about the Ecos-discuss mailing list