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

Claudio Leonel cls@xpnet.com.br
Mon Sep 29 12:58:00 GMT 2003


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);
   }	
}
---------------------------------------------------------------


Regards,
Claudio L. Salvadori



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