rtems_semaphore_obtain

Daron Chabot daron.chabot at usask.ca
Tue Mar 20 16:50:02 UTC 2007


On Tue, 2007-03-20 at 10:03 -0500, Eric Norum wrote:
> On Mar 20, 2007, at 8:34 AM, Chris Xenophontos wrote:
> 
> > All, thanks for the suggestions-
> >
> > The interrupt is a continuous interrupt source, does not need re- 
> > enabling.
> > It is ack'ed in the ISR upon entry, and the H/W regs are being  
> > loaded into
> > global variables.
> >
> > Almost appears to be a point at which, during execution of the  
> > task, that
> > release of a semaphore does not register.  Again, this is once in  
> > about 4-10
> > hours, with interrupt being generated every 3.001 seconds.
> >
> > I am going to start with a simple fix first, i.e, using a counting
> > semaphore, as L. Pollak indicated -
> 
>   Be very careful with this since you're using shared variables to  
> transfer data between the ISR and the task........the interrupt  
> handler might overwrite the data before the task can get at all or  
> part of it.  The message queue approach avoids this problem.
> 
> I am concerned that you may have uncovered a more serious problem.
> I don't have time to go through the semaphore code with a fine  
> toothed comb and check that there are no possible race conditions --  
> maybe Joel can do this when he gets back from Europe.  Or perhaps  
> Daron can do this for us???

I'm fairly swamped at "work" right now, but I will have a look through
the semaphore code this evening, if I get time. 

It can't hurt to throw as many sets of eyes as possible at such an
important component...

-- dc




More information about the users mailing list