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: Re: Is main() a normal thread ?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]