diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-04-16 15:34:41 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-04-16 17:52:37 +0200 |
commit | 1268326e814837e111eaf320f72661f288393839 (patch) | |
tree | 5518044c0fc0c952ae365560c287e7b3d5162929 /sal | |
parent | b98617b3c86863fe5b4e3d9a96519707ae8cf58c (diff) |
Further clean-up related to removed library unloading feature
Change-Id: I1ec2aa4d0ed0940e7c0a26a18c78f2df4693d278
Diffstat (limited to 'sal')
-rw-r--r-- | sal/inc/rtl/unload.h | 66 | ||||
-rw-r--r-- | sal/osl/all/compat.cxx | 25 | ||||
-rw-r--r-- | sal/rtl/unload.cxx | 76 |
3 files changed, 41 insertions, 126 deletions
diff --git a/sal/inc/rtl/unload.h b/sal/inc/rtl/unload.h index 0bbc414e792d..118b5cce9127 100644 --- a/sal/inc/rtl/unload.h +++ b/sal/inc/rtl/unload.h @@ -22,46 +22,22 @@ #include "sal/config.h" #include "osl/interlck.h" -#include "osl/module.h" #include "osl/time.h" #include "sal/saldllapi.h" #include "sal/types.h" -/** C-interface for a module reference counting - */ +/** @file + Backwards-compatibility remainders of a removed library unloading feature. +*/ + #ifdef __cplusplus extern "C" { #endif -/** -Pointers to <code>rtl_ModuleCount</code> are passed as arguments to the default factory creator -functions: <code>createSingleComponentFactory</code>, <code>createSingleFactory</code>, -<code>createOneInstanceFactory</code>. -The factory implementation is calling <code>rtl_ModuleCount.acquire</code> when it is being -constructed and it is calling <code>rtl_ModuleCount.release</code>. The implementations of -<code>acquire</code> -and <code>release</code> should influence the return value of <code>component_canUnload</code> -in a way that it -returns <code>sal_False</code> after <code>acquire</code> has been called. That is the module will not be unloaded -once a default factory has been created. A call to <code>release</code> may cause -<code>component_canUnload</code> to return <code>sal_False</code>, but only if there are -no object alive which -originated from the module. These objects are factory instances and the service instances -which have been created by these factories. -<p> -It is not necessary to synchronize <code>acquire</code> and <code>release</code> as a whole. -Simply sychronize the -access to a counter variable, e.g. the <code>rtl_moduleCount_release</code> implementation: -<pre> -extern "C" void rtl_moduleCount_acquire(rtl_ModuleCount * that ) -{ - rtl_StandardModuleCount* pMod= (rtl_StandardModuleCount*)that; - osl_atomic_increment( &pMod->counter); -} -</pre> -The SAL library offers functions that can be used for <code>acquire</code> and <code>release</code>. See struct -<code>_rtl_StandardModuleCount</code>. +/** Backwards-compatibility remainder of a removed library unloading feature. + + @deprecated Do not use. */ typedef struct _rtl_ModuleCount { @@ -69,16 +45,16 @@ typedef struct _rtl_ModuleCount void ( SAL_CALL * release ) ( struct _rtl_ModuleCount * that ); }rtl_ModuleCount; +/** Backwards-compatibility remainder of a removed library unloading feature. + @deprecated Do not use. +*/ #define MODULE_COUNT_INIT \ { {rtl_moduleCount_acquire,rtl_moduleCount_release}, rtl_moduleCount_canUnload, 0, {0, 0}} -/** -This struct can be used to implement the unloading mechanism. To make a UNO library -unloadable create one global instance of this struct in the module. To initialize it one -uses the MODULE_COUNT_INIT macro. +/** Backwards-compatibility remainder of a removed library unloading feature. -<pre>rtl_StandardModuleCount globalModuleCount= MODULE_COUNT_INIT</pre>; + @deprecated Do not use. */ typedef struct _rtl_StandardModuleCount { @@ -88,22 +64,24 @@ typedef struct _rtl_StandardModuleCount TimeValue unusedSince; } rtl_StandardModuleCount; -/** Default implementation for <code>rtl_ModuleCount.acquire</code>. Use this function along with -<code>rtl_StandardModuleCount</code>. +/** Backwards-compatibility remainder of a removed library unloading feature. + + @deprecated Do not use. */ SAL_DLLPUBLIC void rtl_moduleCount_acquire(rtl_ModuleCount * that ); -/** Default implementation for <code>rtl_ModuleCount.release</code>. -Use this function along with -<code>rtl_StandardModuleCount</code>. + +/** Backwards-compatibility remainder of a removed library unloading feature. + + @deprecated Do not use. */ SAL_DLLPUBLIC void rtl_moduleCount_release( rtl_ModuleCount * that ); -/** Default implementation for <code>component_canUnload</code>. Use this function along with -<code>rtl_StandardModuleCount</code>. +/** Backwards-compatibility remainder of a removed library unloading feature. + + @deprecated Do not use. */ SAL_DLLPUBLIC sal_Bool rtl_moduleCount_canUnload( rtl_StandardModuleCount * that, TimeValue* libUnused); - #ifdef __cplusplus } #endif diff --git a/sal/osl/all/compat.cxx b/sal/osl/all/compat.cxx index 12f0da13fade..2f86771bb753 100644 --- a/sal/osl/all/compat.cxx +++ b/sal/osl/all/compat.cxx @@ -39,6 +39,12 @@ SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL osl_tryToAcquireSemaphore(void *) { for (;;) { std::abort(); } // avoid "must return a value" warnings } +SAL_DLLPUBLIC_EXPORT sal_Int32 SAL_CALL rtl_addUnloadingListener( + void (SAL_CALL *)(void *), void *) +{ + for (;;) { std::abort(); } // avoid "must return a value" warnings +} + SAL_DLLPUBLIC_EXPORT sal_Int32 SAL_CALL rtl_compareMemory( void const *, void const *, sal_Size) { @@ -67,33 +73,24 @@ SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_moveMemory( std::abort(); } -SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_zeroMemory(void *, sal_Size) { - std::abort(); -} - SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL rtl_registerModuleForUnloading(oslModule) { for (;;) { std::abort(); } // avoid "must return a value" warnings } -SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_unregisterModuleForUnloading(oslModule) -{ +SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_removeUnloadingListener(sal_Int32) { std::abort(); } -SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_unloadUnusedModules(TimeValue *) -{ +SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_unloadUnusedModules(TimeValue *) { std::abort(); } -typedef void (SAL_CALL *rtl_unloadingListenerFunc)(void *id); -SAL_DLLPUBLIC_EXPORT sal_Int32 SAL_CALL rtl_addUnloadingListener(rtl_unloadingListenerFunc, void *) -{ - for (;;) { std::abort(); } // avoid "must return a value" warnings +SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_unregisterModuleForUnloading(oslModule) { + std::abort(); } -SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_removeUnloadingListener(sal_Int32) -{ +SAL_DLLPUBLIC_EXPORT void SAL_CALL rtl_zeroMemory(void *, sal_Size) { std::abort(); } diff --git a/sal/rtl/unload.cxx b/sal/rtl/unload.cxx index dd8ee23b49bc..0b5bc2e79d27 100644 --- a/sal/rtl/unload.cxx +++ b/sal/rtl/unload.cxx @@ -17,79 +17,19 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <rtl/unload.h> +#include "sal/config.h" -#include <rtl/ustring.hxx> -#include <rtl/instance.hxx> -#include <osl/mutex.hxx> +#include "osl/time.h" +#include "rtl/unload.h" -using osl::MutexGuard; +extern "C" void rtl_moduleCount_acquire(rtl_ModuleCount *) {} -//---------------------------------------------------------------------------- +extern "C" void rtl_moduleCount_release(rtl_ModuleCount *) {} -#ifndef DISABLE_DYNLOADING - -namespace -{ - class theUnloadingMutex : public rtl::Static<osl::Mutex, theUnloadingMutex>{}; -} - -static osl::Mutex& getUnloadingMutex() -{ - return theUnloadingMutex::get(); -} - -#endif - -extern "C" void rtl_moduleCount_acquire(rtl_ModuleCount * that ) -{ -#ifdef DISABLE_DYNLOADING - (void) that; -#else - rtl_StandardModuleCount* pMod= (rtl_StandardModuleCount*)that; - osl_atomic_increment( &pMod->counter); -#endif -} - -extern "C" void rtl_moduleCount_release( rtl_ModuleCount * that ) -{ -#ifdef DISABLE_DYNLOADING - (void) that; -#else - rtl_StandardModuleCount* pMod= (rtl_StandardModuleCount*)that; - OSL_ENSURE( pMod->counter >0 , "library counter incorrect" ); - osl_atomic_decrement( &pMod->counter); - if( pMod->counter == 0) - { - MutexGuard guard( getUnloadingMutex()); - - if( sal_False == osl_getSystemTime( &pMod->unusedSince) ) - { - // set the time to 0 if we could not get the time - pMod->unusedSince.Seconds= 0; - pMod->unusedSince.Nanosec= 0; - } - } -#endif -} - -extern "C" sal_Bool rtl_moduleCount_canUnload( rtl_StandardModuleCount * that, TimeValue * libUnused) +extern "C" sal_Bool rtl_moduleCount_canUnload( + rtl_StandardModuleCount *, TimeValue *) { -#ifdef DISABLE_DYNLOADING - (void) that; - (void) libUnused; - return sal_False; -#else - if (that->counter == 0) - { - MutexGuard guard( getUnloadingMutex()); - if (libUnused && (that->counter == 0)) - { - memcpy(libUnused, &that->unusedSince, sizeof(TimeValue)); - } - } - return (that->counter == 0); -#endif + return false; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |