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]

eCos 2.0 pthread_create problem


My ARM7 system crashes when I call pthread_create.

The assumptions: 'thread' declared as pthread_t thread;, 'vDiagDumpZack' has the form void* vDiagDumpZack(void*)
It is my belief that the following statement should create a thread, initialize it to default values and run it.
rc = pthread_create(&thread, NULL, vDiagDumpZack, NULL);


The symption: The above statement crashes the system shortly after reporting being properly created. I believe the crash happens when the system tries to run it. (I think it has a stack size of zero and stack location of 0, but I'm not positive.) The discussion list mentions something about a possible stack alignment problem.

I'm running an ARM7 processor on a Cirrus Logic EDB-7212. My eCos library is built with all packages.


void vDiagDumpRegisters(unsigned long ulR0, unsigned long ulR1, unsigned long ulR2, unsigned long ulR3, unsigned long ulR4,
unsigned long ulR5, unsigned long ulR6, unsigned long ulR7)
{
diag_printf("\n\r %08lX, %08lX, %08lX, %08lX, %08lX, %08lX, %08lX, %08lX", ulR0, ulR1, ulR2, ulR3, ulR4, ulR5, ulR6, ulR7);
}



void * vDiagDumpZack(void *z)
{
vDiagDumpRegisters(0x01234560, 0x12345671, 0x22345672, 0x32345673, 0x42345674, 0x52345675, 0x62345676, 0x72345677);
return 0;
}



void vThreadECI(cyg_addrword_t data) { int wCount, rc; pthread_t thread;


wCount = 0;


diag_printf("\n\r vThreadECI");

  while (1)
  {
    cyg_thread_delay(100);
    diag_printf("*");
    wCount++;
    if (wCount == 5) // Wait for 5 '*'s to output before starting new thread
    {
      diag_printf("\n\r Creating pthread");
      rc= pthread_create(&thread, NULL, vDiagDumpZack, NULL);
      diag_printf("\n\r pthread result was %d", rc);
    }
  }
}

My output is:
 vThreadECI
*****
Creating pthread
 pthread result was 0
(silence, system is hosed)


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