jurt/source/pipe/staticsalhack_c.c | 1 jurt/source/pipe/staticsalhack_cxx.cxx | 1 sal/Library_sal.mk | 2 sal/osl/unx/thread.c | 1011 ------------------------------- sal/osl/unx/thread.cxx | 1044 +++++++++++++++++++++++++++++++++ 5 files changed, 1046 insertions(+), 1013 deletions(-)
New commits: commit 4b0197627dcd031758b6ced994f718ce777e69eb Author: Stephan Bergmann <sberg...@redhat.com> Date: Wed Oct 1 09:02:08 2014 +0200 Use sal/log.hxx Change-Id: I54fd66b8788171884c6d3d6e7645871615d48080 diff --git a/sal/osl/unx/thread.cxx b/sal/osl/unx/thread.cxx index fc0ff87..1f0a587 100644 --- a/sal/osl/unx/thread.cxx +++ b/sal/osl/unx/thread.cxx @@ -16,18 +16,21 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <assert.h> + +#include <sal/config.h> + +#include <cassert> #include "system.h" #include <string.h> #if defined(OPENBSD) #include <sched.h> #endif #include <config_options.h> -#include <osl/diagnose.h> #include <osl/thread.h> #include <osl/nlsupport.h> #include <rtl/textenc.h> #include <rtl/alloc.h> +#include <sal/log.hxx> #include <sal/macros.h> #ifdef ANDROID #include <jni.h> @@ -157,7 +160,7 @@ Thread_Impl* osl_thread_construct_Impl (void) static void osl_thread_destruct_Impl (Thread_Impl ** ppImpl) { - OSL_ASSERT(ppImpl); + assert(ppImpl); if (*ppImpl) { pthread_cond_destroy (&((*ppImpl)->m_Cond)); @@ -295,8 +298,10 @@ static oslThread osl_thread_create_Impl ( osl_thread_start_Impl, (void*)(pImpl))) != 0) { - OSL_TRACE("osl_thread_create_Impl(): errno: %d, %s\n", - nRet, strerror(nRet)); + SAL_WARN( + "sal.osl", + "pthread_create failed with " << nRet << " \"" << strerror(nRet) + << "\""); pthread_mutex_unlock (&(pImpl->m_Lock)); osl_thread_destruct_Impl (&pImpl); @@ -360,9 +365,11 @@ void SAL_CALL osl_resumeThread(oslThread Thread) { Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_resumeThread(nullptr) call"); return; /* EINVAL */ + } pthread_mutex_lock (&(pImpl->m_Lock)); @@ -380,9 +387,11 @@ void SAL_CALL osl_suspendThread(oslThread Thread) { Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_suspendThread(nullptr) call"); return; /* EINVAL */ + } pthread_mutex_lock (&(pImpl->m_Lock)); @@ -450,9 +459,11 @@ void SAL_CALL osl_terminateThread(oslThread Thread) { Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_terminateThread(nullptr) call"); return; /* EINVAL */ + } pthread_mutex_lock (&(pImpl->m_Lock)); @@ -473,13 +484,17 @@ sal_Bool SAL_CALL osl_scheduleThread(oslThread Thread) bool terminate; Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_scheduleThread(nullptr) call"); return sal_False; /* EINVAL */ + } - OSL_ASSERT(pthread_equal (pthread_self(), pImpl->m_hThread)); if (!(pthread_equal (pthread_self(), pImpl->m_hThread))) + { + SAL_WARN("sal.osl", "invalid osl_scheduleThread(non-self) call"); return sal_False; /* EINVAL */ + } pthread_mutex_lock (&(pImpl->m_Lock)); @@ -524,9 +539,8 @@ void SAL_CALL osl_yieldThread() void SAL_CALL osl_setThreadName(char const * name) { #if defined LINUX && ! defined __FreeBSD_kernel__ if (prctl(PR_SET_NAME, (unsigned long) name, 0, 0, 0) != 0) { - OSL_TRACE( - "%s prctl(PR_SET_NAME) failed with errno %d", OSL_LOG_PREFIX, - errno); + int e = errno; + SAL_WARN("sal.osl", "prctl(PR_SET_NAME) failed with errno " << e); } #else (void) name; @@ -689,7 +703,10 @@ static void osl_thread_priority_init_Impl (void) if ((nRet = pthread_getschedparam(pthread_self(), &policy, ¶m)) != 0) { - OSL_TRACE("failed to get priority of thread [%s]",strerror(nRet)); + SAL_WARN( + "sal.osl", + "pthread_getschedparam failed with " << nRet << " \"" + << strerror(nRet) << "\""); return; } @@ -705,27 +722,33 @@ static void osl_thread_priority_init_Impl (void) if ((nRet = sched_get_priority_min(policy) ) != -1) { - OSL_TRACE("Min Prioriy for policy '%i' == '%i'",policy,nRet); + SAL_INFO( + "sal.osl", "Min Prioriy for policy " << policy << " == " << nRet); g_thread.m_priority.m_Lowest=nRet; } -#if OSL_DEBUG_LEVEL > 1 else { - fprintf(stderr,"failed to get min sched param [%s]\n",strerror(errno)); + int e = errno; + SAL_WARN( + "sal.osl", + "sched_get_priority_min failed with " << e << " \"" << strerror(e) + << "\""); } -#endif /* OSL_DEBUG_LEVEL */ if ((nRet = sched_get_priority_max(policy) ) != -1) { - OSL_TRACE("Max Prioriy for policy '%i' == '%i'",policy,nRet); + SAL_INFO( + "sal.osl", "Max Prioriy for policy " << policy << " == " << nRet); g_thread.m_priority.m_Highest=nRet; } -#if OSL_DEBUG_LEVEL > 1 else { - fprintf(stderr,"failed to get max sched param [%s]\n",strerror(errno)); + int e = errno; + SAL_WARN( + "sal.osl", + "sched_get_priority_max failed with " << e << " \"" << strerror(e) + << "\""); } -#endif /* OSL_DEBUG_LEVEL */ g_thread.m_priority.m_Normal = (g_thread.m_priority.m_Lowest + g_thread.m_priority.m_Highest) / 2; @@ -740,8 +763,14 @@ static void osl_thread_priority_init_Impl (void) if ((nRet = pthread_setschedparam(pthread_self(), policy, ¶m)) != 0) { - OSL_TRACE("failed to change base priority of thread [%s]",strerror(nRet)); - OSL_TRACE("Thread ID '%i', Policy '%i', Priority '%i'\n",pthread_self(),policy,param.sched_priority); + SAL_WARN( + "sal.osl", + "pthread_setschedparam failed with " << nRet << " \"" + << strerror(nRet) << "\""); + SAL_INFO( + "sal.osl", + "Thread ID " << pthread_self() << ", Policy " << policy + << ", Priority " << param.sched_priority); } #endif /* NO_PTHREAD_PRIORITY */ @@ -769,9 +798,11 @@ void SAL_CALL osl_setThreadPriority ( Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_setThreadPriority(nullptr, ...) call"); return; /* EINVAL */ + } #ifdef NO_PTHREAD_PRIORITY (void) Priority; /* unused */ @@ -815,22 +846,25 @@ void SAL_CALL osl_setThreadPriority ( break; case osl_Thread_PriorityUnknown: - OSL_ASSERT(sal_False); /* only fools try this...*/ - - /* let release-version behave friendly */ + SAL_WARN( + "sal.osl", + "invalid osl_setThreadPriority(..., osl_Thread_PriorityUnknown)" + " call"); return; default: - /* enum expanded, but forgotten here...*/ - OSL_ENSURE(sal_False,"osl_setThreadPriority : unknown priority\n"); - - /* let release-version behave friendly */ + SAL_WARN( + "sal.osl", + "invalid osl_setThreadPriority(..., " << Priority << ") call"); return; } if ((nRet = pthread_setschedparam(pImpl->m_hThread, policy, &Param)) != 0) { - OSL_TRACE("failed to change thread priority [%s]",strerror(nRet)); + SAL_WARN( + "sal.osl", + "pthread_setschedparam failed with " << nRet << " \"" + << strerror(nRet) << "\""); } #endif /* NO_PTHREAD_PRIORITY */ @@ -848,9 +882,11 @@ oslThreadPriority SAL_CALL osl_getThreadPriority(const oslThread Thread) oslThreadPriority Priority = osl_Thread_PriorityNormal; Thread_Impl* pImpl= (Thread_Impl*)Thread; - OSL_ASSERT(pImpl); if (!pImpl) + { + SAL_WARN("sal.osl", "invalid osl_getThreadPriority(nullptr) call"); return osl_Thread_PriorityUnknown; /* EINVAL */ + } #ifndef NO_PTHREAD_PRIORITY @@ -967,15 +1003,13 @@ static void osl_thread_textencoding_init_Impl (void) /* determine default text encoding */ defaultEncoding = osl_getTextEncodingFromLocale(NULL); - OSL_ASSERT(defaultEncoding != RTL_TEXTENCODING_DONTKNOW); - - /* - Tools string functions call abort() on an unknown encoding so ASCII - is a meaningfull fallback regardless whether the assertion makes sense. - */ - + // Tools string functions call abort() on an unknown encoding so ASCII is a + // meaningfull fallback: if ( RTL_TEXTENCODING_DONTKNOW == defaultEncoding ) + { + SAL_WARN("sal.osl", "RTL_TEXTENCODING_DONTKNOW -> _ASCII_US"); defaultEncoding = RTL_TEXTENCODING_ASCII_US; + } g_thread.m_textencoding.m_default = defaultEncoding; } commit 585ac6e4dd49d8cb52e575a0ba1aaec9b58aa835 Author: Stephan Bergmann <sberg...@redhat.com> Date: Wed Oct 1 08:37:21 2014 +0200 sal/osl/unx/thread.c -> .cxx Change-Id: I6cb46a51dda3fda51a3b6413656da15fc5bdb04d diff --git a/jurt/source/pipe/staticsalhack_c.c b/jurt/source/pipe/staticsalhack_c.c index 77c4291..ac9a913 100644 --- a/jurt/source/pipe/staticsalhack_c.c +++ b/jurt/source/pipe/staticsalhack_c.c @@ -14,6 +14,5 @@ #include <sal/osl/unx/nlsupport.c> #include <sal/osl/unx/pipe.c> #include <sal/osl/unx/readwrite_helper.c> -#include <sal/osl/unx/thread.c> /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/jurt/source/pipe/staticsalhack_cxx.cxx b/jurt/source/pipe/staticsalhack_cxx.cxx index f3a5e5d..de02379 100644 --- a/jurt/source/pipe/staticsalhack_cxx.cxx +++ b/jurt/source/pipe/staticsalhack_cxx.cxx @@ -31,6 +31,7 @@ #include <sal/osl/unx/process_impl.cxx> #include <sal/osl/unx/profile.cxx> #include <sal/osl/unx/security.cxx> +#include <sal/osl/unx/thread.cxx> #include <sal/osl/unx/uunxapi.cxx> #include <sal/rtl/alloc_arena.cxx> #include <sal/rtl/alloc_cache.cxx> diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk index e5c02c2..12f5551 100644 --- a/sal/Library_sal.mk +++ b/sal/Library_sal.mk @@ -167,6 +167,7 @@ $(eval $(call gb_Library_add_exception_objects,sal,\ sal/osl/unx/profile \ sal/osl/unx/security \ sal/osl/unx/tempfile \ + sal/osl/unx/thread \ $(if $(filter DESKTOP,$(BUILD_TYPE)), sal/osl/unx/salinit) \ )) $(eval $(call gb_Library_add_cobjects,sal,\ @@ -177,7 +178,6 @@ $(eval $(call gb_Library_add_cobjects,sal,\ sal/osl/unx/readwrite_helper \ sal/osl/unx/socket \ sal/osl/unx/system \ - sal/osl/unx/thread \ sal/osl/unx/time \ )) $(eval $(call gb_Library_add_cobject,sal,sal/osl/unx/signal, \ diff --git a/sal/osl/unx/thread.c b/sal/osl/unx/thread.cxx similarity index 98% rename from sal/osl/unx/thread.c rename to sal/osl/unx/thread.cxx index 1c703ca..fc0ff87 100644 --- a/sal/osl/unx/thread.c +++ b/sal/osl/unx/thread.cxx @@ -144,7 +144,7 @@ static void osl_thread_init_Impl (void) Thread_Impl* osl_thread_construct_Impl (void) { - Thread_Impl* pImpl = malloc (sizeof(Thread_Impl)); + Thread_Impl* pImpl = new Thread_Impl; if (pImpl) { memset (pImpl, 0, sizeof(Thread_Impl)); @@ -171,8 +171,8 @@ static void osl_thread_destruct_Impl (Thread_Impl ** ppImpl) static void osl_thread_cleanup_Impl (Thread_Impl * pImpl) { pthread_t thread; - int attached; - int destroyed; + bool attached; + bool destroyed; pthread_mutex_lock (&(pImpl->m_Lock)); @@ -199,7 +199,7 @@ static void osl_thread_cleanup_Impl (Thread_Impl * pImpl) static void* osl_thread_start_Impl (void* pData) { - int terminate; + bool terminate; Thread_Impl* pImpl= (Thread_Impl*)pData; assert(pImpl); @@ -345,7 +345,7 @@ void SAL_CALL osl_destroyThread(oslThread Thread) { if (Thread != NULL) { Thread_Impl * impl = (Thread_Impl *) Thread; - int active; + bool active; pthread_mutex_lock(&impl->m_Lock); active = (impl->m_Flags & THREADIMPL_FLAGS_ACTIVE) != 0; impl->m_Flags |= THREADIMPL_FLAGS_DESTROYED; @@ -403,7 +403,7 @@ void SAL_CALL osl_suspendThread(oslThread Thread) sal_Bool SAL_CALL osl_isThreadRunning(const oslThread Thread) { - sal_Bool active; + bool active; Thread_Impl* pImpl= (Thread_Impl*)Thread; if (!pImpl) @@ -419,7 +419,7 @@ sal_Bool SAL_CALL osl_isThreadRunning(const oslThread Thread) void SAL_CALL osl_joinWithThread(oslThread Thread) { pthread_t thread; - int attached; + bool attached; Thread_Impl* pImpl= (Thread_Impl*)Thread; if (!pImpl) @@ -470,7 +470,7 @@ void SAL_CALL osl_terminateThread(oslThread Thread) sal_Bool SAL_CALL osl_scheduleThread(oslThread Thread) { - int terminate; + bool terminate; Thread_Impl* pImpl= (Thread_Impl*)Thread; OSL_ASSERT(pImpl); @@ -493,7 +493,7 @@ sal_Bool SAL_CALL osl_scheduleThread(oslThread Thread) pthread_mutex_unlock(&(pImpl->m_Lock)); - return (terminate == 0); + return !terminate; } void SAL_CALL osl_waitThread(const TimeValue* pDelay) @@ -938,7 +938,7 @@ void* SAL_CALL osl_getThreadKeyData(oslThreadKey Key) sal_Bool SAL_CALL osl_setThreadKeyData(oslThreadKey Key, void *pData) { - sal_Bool bRet; + bool bRet; void *pOldData = NULL; wrapper_pthread_key *pKey = (wrapper_pthread_key*)Key; if (!pKey) @@ -987,8 +987,7 @@ rtl_TextEncoding SAL_CALL osl_getThreadTextEncoding() pthread_once (&(g_thread.m_once), osl_thread_init_Impl); /* check for thread specific encoding, use default if not set */ - threadEncoding = SAL_INT_CAST( - rtl_TextEncoding, + threadEncoding = static_cast<rtl_TextEncoding>( (sal_uIntPtr) pthread_getspecific(g_thread.m_textencoding.m_key)); if (0 == threadEncoding) threadEncoding = g_thread.m_textencoding.m_default; @@ -1003,7 +1002,7 @@ rtl_TextEncoding osl_setThreadTextEncoding(rtl_TextEncoding Encoding) /* save encoding in thread local storage */ pthread_setspecific ( g_thread.m_textencoding.m_key, - (void*) SAL_INT_CAST(sal_uIntPtr, Encoding)); + (void*) static_cast<sal_uIntPtr>(Encoding)); return oldThreadEncoding; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits