From 3e5a20cf6b6f7b8116c5dd483b7d0082d9ca5281 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 29 Aug 2008 14:48:40 +0200 Subject: [PATCH] Merge rest of patch from #72. --- runtime/internal/critical.c | 6 +++++- runtime/internal/memory.d | 12 ++++++++++++ runtime/internal/monitor.c | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/runtime/internal/critical.c b/runtime/internal/critical.c index 1c06a305..c47d5793 100644 --- a/runtime/internal/critical.c +++ b/runtime/internal/critical.c @@ -75,12 +75,16 @@ void _STD_critical_term() /* ================================= linux ============================ */ -#if linux +#if linux || __APPLE__ #include #include #include +#ifndef HAVE_PTHREAD_MUTEX_RECURSIVE +#define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE +#endif + /****************************************** * Enter/exit critical section. */ diff --git a/runtime/internal/memory.d b/runtime/internal/memory.d index 48bf4ef8..bc730cdf 100644 --- a/runtime/internal/memory.d +++ b/runtime/internal/memory.d @@ -85,6 +85,10 @@ extern (C) void* rt_stackBottom() return *libc_stack_end; } } + else version( darwin ) + { + static assert( false, "darwin not supported" ); + } else { static assert( false, "Operating system not supported." ); @@ -147,6 +151,10 @@ private alias __data_start Data_Start; alias _end Data_End; } + else version( darwin ) + { + // TODO: How to access the darwin data segment? + } alias void delegate( void*, void* ) scanFn; } @@ -166,6 +174,10 @@ extern (C) void rt_scanStaticData( scanFn scan ) //printf("scanning static data from %p to %p\n", &Data_Start, &Data_End); scan( &Data_Start, &Data_End ); } + else version( darwin ) + { + static assert( false, "darwin not supported." ); + } else { static assert( false, "Operating system not supported." ); diff --git a/runtime/internal/monitor.c b/runtime/internal/monitor.c index 7cdd394c..7367dd1d 100644 --- a/runtime/internal/monitor.c +++ b/runtime/internal/monitor.c @@ -127,6 +127,10 @@ void _d_monitor_unlock(Object *h) #if USE_PTHREADS +#ifndef HAVE_PTHREAD_MUTEX_RECURSIVE +#define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE +#endif + // Includes attribute fixes from David Friedman's GDC port static pthread_mutex_t _monitor_critsec;