summaryrefslogtreecommitdiff
path: root/os_dep.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 /os_dep.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 'os_dep.c')
-rw-r--r--os_dep.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/os_dep.c b/os_dep.c
index 2d73340..3cc6fff 100644
--- a/os_dep.c
+++ b/os_dep.c
@@ -1351,6 +1351,15 @@ GC_INNER word GC_page_size = 0;
# define HAVE_GET_STACK_BASE
#endif /* GC_SOLARIS_THREADS */
+#ifdef GC_RTEMS_PTHREADS
+ GC_API int GC_CALL GC_get_stack_base(struct GC_stack_base *sb)
+ {
+ sb->mem_base = rtems_get_stack_bottom();
+ return GC_SUCCESS;
+ }
+# define HAVE_GET_STACK_BASE
+#endif /* GC_RTEMS_PTHREADS */
+
#ifndef HAVE_GET_STACK_BASE
/* Retrieve stack base. */
/* Using the GC_find_limit version is risky. */