summaryrefslogtreecommitdiff
path: root/pthread_support.c
diff options
context:
space:
mode:
authorJie Liu <lj8175@gmail.com>2011-09-09 16:21:49 +0200
committerIvan Maidanski <ivmai@mail.ru>2011-09-09 16:21:49 +0200
commit0539e08bb47d310c01bbb35354954436157110d0 (patch)
tree70556fd88bd88c725b9f935d2a4015a510e5f365 /pthread_support.c
parentd40bcf238067f2be8e9a8327b2e915eeab8d6818 (diff)
Support multi-threading for RTEMS target.
(Apply commit e773036) * configure.ac: Add GC_RTEMS_PTHREADS AH_TEMPLATE and configure for rtems. * os_dep.c: Add GC_get_stack_base if GC_RTEMS_PTHREADS for rtems. * pthread_stop_world.c (GC_stop_init): Add ifdef SA_RESTART. * pthread_stop_world.c (GC_stop_init): Use sigprocmask for rtems when defined GC_RTEMS_PTHREADS. * pthread_support.c: Exclude sys/mman.h for rtems. * pthread_support.c (GC_thr_init): Set default GC_nprocs (1) for rtems. * include/gc_config_macros.h: Define GC_RTEMS_PTHREADS for rtems pthread and define GC_NO_DLOPEN for rtems. * include/private/gc_locks.h: Define USE_PTHREAD_LOCKS for rtems. * include/private/gcconfig.h: Use rtems_get_stack_bottom() for InitStackBottom; and use SIGUSR1 for SIG_SUSPEND, SIGUSR2 for SIG_THR_RESTART on rtems. * include/private/thread_local_alloc.h: Use USE_PTHREAD_SPECIFIC for rtems. * tests/test.c (Init): Use exit(0) for rtems instead of return. * configure: Regenerate. * include/private/config.h.in: Ditto.
Diffstat (limited to 'pthread_support.c')
-rw-r--r--pthread_support.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/pthread_support.c b/pthread_support.c
index bcdfebd..8731775 100644
--- a/pthread_support.c
+++ b/pthread_support.c
@@ -52,7 +52,9 @@
# include <time.h>
# include <errno.h>
# include <unistd.h>
-# include <sys/mman.h>
+# if !defined(GC_RTEMS_PTHREADS)
+# include <sys/mman.h>
+# endif
# include <sys/time.h>
# include <sys/types.h>
# include <sys/stat.h>
@@ -953,6 +955,8 @@ GC_INNER void GC_thr_init(void)
GC_nprocs = get_ncpu();
# elif defined(GC_LINUX_THREADS) || defined(GC_DGUX386_THREADS)
GC_nprocs = GC_get_nprocs();
+# elif defined(GC_RTEMS_PTHREADS)
+ GC_nprocs = 1; /* not implemented */
# endif
}
if (GC_nprocs <= 0) {