X-Git-Url: https://git.llucax.com/software/druntime.git/blobdiff_plain/d1b901cd13b1a1a9ecb3af3aecb343863d0a0049..1d6b260d32d802b99dcdd3c9e9e3b97c19d3f856:/src/common/core/thread.d diff --git a/src/common/core/thread.d b/src/common/core/thread.d index 326b3aa..ef8984b 100644 --- a/src/common/core/thread.d +++ b/src/common/core/thread.d @@ -84,8 +84,8 @@ version( Windows ) { private { - import stdc.stdint : uintptr_t; // for _beginthreadex decl below - import sys.windows.windows; + import core.stdc.stdint : uintptr_t; // for _beginthreadex decl below + import core.sys.windows.windows; const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; @@ -151,11 +151,13 @@ else version( Posix ) { private { - import stdc.posix.semaphore; - import stdc.posix.pthread; - import stdc.posix.signal; - import stdc.posix.time; - import stdc.errno; + import core.sys.posix.semaphore; + import core.sys.posix.pthread; + import core.sys.posix.signal; + import core.sys.posix.time; + import core.stdc.errno; + + extern (C) int getErrno(); version( GNU ) { @@ -198,8 +200,20 @@ else version( Posix ) // implementation actually requires default initialization // then pthread_cleanup should be restructured to maintain // the current lack of a link dependency. + version( linux ) + { + pthread_cleanup cleanup = void; + cleanup.push( &thread_cleanupHandler, cast(void*) obj ); + } + else version( darwin ) + { pthread_cleanup cleanup = void; cleanup.push( &thread_cleanupHandler, cast(void*) obj ); + } + else + { + pthread_cleanup_push( &thread_cleanupHandler, cast(void*) obj ); + } // NOTE: For some reason this does not always work for threads. //obj.m_main.bstack = getStackBottom(); @@ -2243,9 +2257,9 @@ private version( Posix ) { - import stdc.posix.unistd; // for sysconf - import stdc.posix.sys.mman; // for mmap - import stdc.posix.stdlib; // for malloc, valloc, free + import core.sys.posix.unistd; // for sysconf + import core.sys.posix.sys.mman; // for mmap + import core.sys.posix.stdlib; // for malloc, valloc, free version( AsmX86_Win32 ) {} else version( AsmX86_Posix ) {} else @@ -2257,7 +2271,7 @@ private // a version identifier. Please note that this is considered // an obsolescent feature according to the POSIX spec, so a // custom solution is still preferred. - import stdc.posix.ucontext; + import core.sys.posix.ucontext; } }