diff options
Diffstat (limited to 'src/VBox/Runtime/r3/os2/thread-os2.cpp')
-rw-r--r-- | src/VBox/Runtime/r3/os2/thread-os2.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/VBox/Runtime/r3/os2/thread-os2.cpp b/src/VBox/Runtime/r3/os2/thread-os2.cpp index e2efa01f..e6f20213 100644 --- a/src/VBox/Runtime/r3/os2/thread-os2.cpp +++ b/src/VBox/Runtime/r3/os2/thread-os2.cpp @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Oracle Corporation + * Copyright (C) 2006-2012 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -78,7 +78,7 @@ DECLHIDDEN(int) rtThreadNativeInit(void) } -DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread) +static void rtThreadOs2BlockSigAlarm(void) { /* * Block SIGALRM - required for timer-posix.cpp. @@ -89,6 +89,17 @@ DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread) sigemptyset(&SigSet); sigaddset(&SigSet, SIGALRM); sigprocmask(SIG_BLOCK, &SigSet, NULL); +} + + +DECLHIDDEN(void) rtThreadNativeReInitObtrusive(void) +{ + rtThreadOs2BlockSigAlarm(); +} + + +DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread) +{ *g_ppCurThread = pThread; return VINF_SUCCESS; @@ -107,15 +118,7 @@ DECLHIDDEN(void) rtThreadNativeDestroy(PRTTHREADINT pThread) */ static void rtThreadNativeMain(void *pvArgs) { - /* - * Block SIGALRM - required for timer-posix.cpp. - * This is done to limit harm done by OSes which doesn't do special SIGALRM scheduling. - * It will not help much if someone creates threads directly using pthread_create. :/ - */ - sigset_t SigSet; - sigemptyset(&SigSet); - sigaddset(&SigSet, SIGALRM); - sigprocmask(SIG_BLOCK, &SigSet, NULL); + rtThreadOs2BlockSigAlarm(); /* * Call common main. |