[ECOS] Re: Is main() a normal thread ?

Savin Zlobec savin@elatec.si
Tue Sep 30 08:32:00 GMT 2003


Claudio Leonel wrote:

> Hi,
>
> Savin Zlobec wrote:
>
>> Claudio Leonel wrote:
>>
>>> Hi all,
>>>
>>> I thought main() was a normal thread but if I ran the
>>> following application step by step in gdb there is no
>>> return from the function cyg_thread_delay(). Apparently
>>> it hangs in the call to cyg_thread_delay().
>>>
>>
>> Check the CYGSEM_LIBC_STARTUP_MAIN_THREAD option -
>> it controls how main() is invoked (from an eCos thread or not).
>
>
> It is enabled: main() will be invoked as an eCos thread
> with 8192 bytes of stack and priority 10.
> If I interrupt the application in gdb and execute 'info threads'
> main() appears in the thread list.
>
> The most strange thing is that, I if precede 'cyg_thread_delay(100)'
> with a diag_printf("..."), cyg_thread_delay() works and returns
> after 100 ticks:
>
> ---------------------------------------------------------------
> int main(void) {
>   while (1) {
>      diag_printf("...\n");    // Works if I insert this line !
>      cyg_thread_delay(100);
>   }   
> }
> ---------------------------------------------------------------

Most strange. Maybe you should give more info about your configuration,
platform, eCos version and tools. Is the above all of your program or 
are you
doing something else before main (in cyg_user_start) ?

savin 




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