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]
Other format: [Raw text]

Re: Mutex & Asserts during initialisation


On Fri, Jul 08, 2005 at 01:17:47PM +0100, Will Wagner wrote:
> Hi All,
> 
> I am trying to run with asserts on to test a couple of things. However 
> there seems to be a problem with the mutex check_this function has been 
> implemented.
> 
> If anything tries to lock a mutex before the scheduler has been started 
> then an assert goes off. This is because when locking the mutex 
> Cyg_Thread::self() returns NULL. So in the check this function locked is 
> true but owner is NULL so it fails.
> 
> This means that you can't use SPI or i2c before the scheduler starts. If 
> you have any driver that is initialised via static constructor that uses 
> either of those then the system asserts. An example of this would be the 
> DS1307 wallclock.
> 
> How has anyone worked around this in the past?

Humm, i think this is reasonable behaviour. Anything that tries to use
a mutex must assume it can block. Otherwise why are you using a mutex! 

I think the solution for you is to also start the schedular in a
static constructor. Just give it a higher priority than anything that
needs the schedular enabled.

        Andrew

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