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 ?


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


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