From 07047de048ee43b0f35dc8d99b72b2e30012f023 Mon Sep 17 00:00:00 2001 From: Victor Lopez Date: Wed, 13 Jun 2018 12:28:33 +0200 Subject: [PATCH] Minor DLB fixes - Capture DLB_Init error code and disable DLB if needed - Add verbosity to some DLB errors --- src/core/threadmanager.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/core/threadmanager.cpp b/src/core/threadmanager.cpp index 30ef3f3e1..3db1c6244 100644 --- a/src/core/threadmanager.cpp +++ b/src/core/threadmanager.cpp @@ -65,10 +65,16 @@ void ThreadManager::init() #ifdef DLB if ( _useDLB ) { - DLB_Init( 0, &_cpuProcessMask, NULL ); - sys.getPMInterface().registerCallbacks(); - _maxThreads = OS::getMaxProcessors(); - } else { + int err = DLB_Init( 0, &_cpuProcessMask, NULL ); + if (err == DLB_SUCCESS) { + sys.getPMInterface().registerCallbacks(); + _maxThreads = OS::getMaxProcessors(); + } else { + warning0( "DLB Init failed: " << DLB_Strerror(err) ); + _useDLB = false; + } + } + if ( !_useDLB ) { #endif _maxThreads = sys.getSMPPlugin()->getRequestedWorkers(); #ifdef DLB @@ -219,7 +225,8 @@ void ThreadManager::unblockThread( BaseThread* thread ) * in both cases we continue as if DLB were not involved */ } else { - warning( "DLB returned error: " << DLB_Strerror(dlb_err) ); + warning( "DLB returned error: " << DLB_Strerror(dlb_err) << " for cpuid " << cpuid ); + } } } -- GitLab