[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