OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [sim/] [testsuite/] [sim/] [cris/] [c/] [ex1.c] - Diff between revs 24 and 33

Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 33
/* Compiler options:
/* Compiler options:
#notarget: cris*-*-elf
#notarget: cris*-*-elf
#cc: additional_flags=-pthread
#cc: additional_flags=-pthread
#output: Starting process a\naaaaaaaaStarting process b\nababbbbbbbbb
#output: Starting process a\naaaaaaaaStarting process b\nababbbbbbbbb
 
 
   The output will change depending on the exact syscall sequence per
   The output will change depending on the exact syscall sequence per
   thread, so will change with glibc versions.  Prepare to modify; use
   thread, so will change with glibc versions.  Prepare to modify; use
   the latest glibc.
   the latest glibc.
 
 
   This file is from glibc/linuxthreads, with the difference that the
   This file is from glibc/linuxthreads, with the difference that the
   number is 10, not 10000.  */
   number is 10, not 10000.  */
 
 
/* Creates two threads, one printing 10000 "a"s, the other printing
/* Creates two threads, one printing 10000 "a"s, the other printing
   10000 "b"s.
   10000 "b"s.
   Illustrates: thread creation, thread joining. */
   Illustrates: thread creation, thread joining. */
 
 
#include <stddef.h>
#include <stddef.h>
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <unistd.h>
#include "pthread.h"
#include "pthread.h"
 
 
static void *
static void *
process (void *arg)
process (void *arg)
{
{
  int i;
  int i;
  fprintf (stderr, "Starting process %s\n", (char *) arg);
  fprintf (stderr, "Starting process %s\n", (char *) arg);
  for (i = 0; i < 10; i++)
  for (i = 0; i < 10; i++)
    {
    {
      write (1, (char *) arg, 1);
      write (1, (char *) arg, 1);
    }
    }
  return NULL;
  return NULL;
}
}
 
 
int
int
main (void)
main (void)
{
{
  int retcode;
  int retcode;
  pthread_t th_a, th_b;
  pthread_t th_a, th_b;
  void *retval;
  void *retval;
 
 
  retcode = pthread_create (&th_a, NULL, process, (void *) "a");
  retcode = pthread_create (&th_a, NULL, process, (void *) "a");
  if (retcode != 0)
  if (retcode != 0)
    fprintf (stderr, "create a failed %d\n", retcode);
    fprintf (stderr, "create a failed %d\n", retcode);
  retcode = pthread_create (&th_b, NULL, process, (void *) "b");
  retcode = pthread_create (&th_b, NULL, process, (void *) "b");
  if (retcode != 0)
  if (retcode != 0)
    fprintf (stderr, "create b failed %d\n", retcode);
    fprintf (stderr, "create b failed %d\n", retcode);
  retcode = pthread_join (th_a, &retval);
  retcode = pthread_join (th_a, &retval);
  if (retcode != 0)
  if (retcode != 0)
    fprintf (stderr, "join a failed %d\n", retcode);
    fprintf (stderr, "join a failed %d\n", retcode);
  retcode = pthread_join (th_b, &retval);
  retcode = pthread_join (th_b, &retval);
  if (retcode != 0)
  if (retcode != 0)
    fprintf (stderr, "join b failed %d\n", retcode);
    fprintf (stderr, "join b failed %d\n", retcode);
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.