(file) Return to ProviderLoading.txt CVS log (file) (dir) Up to [Pegasus] / pegasus / doc

 1 konrad.r 1.1 OpenPegasus implements RTLD_GLOBAL when loading providers.
 2              
 3              The significance of this is that the provider writer has to be aware off the following:
 4              
 5               - C++ providers sharing a shared library, such as a third party resource library,
 6                 is  accessible amongst the C++ providers that use it (and have been compiled to use the
 7                 shared library). Exceptions from such third-party libraries can be recognized in those
 8                 providers. Previously in Pegasus 2.4 the exceptions were only recognized in the first 
 9                 provider loaded while in the other providers they would not.
10               
11                 Problem: Possible collision of symbolic names of third party libraries. For example, if
12                 the providers were using multiple third-party libraries with the same symbolic names in
13                 the same namespace, then only the symbolic name solved would be called. 
14                 Solution: 
15                  1). Use different namespaces. 
16                  2). Use symbol hidding for different versions 
17                      (http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_node/ld_25.html)
18              
19                 More information is located at http://gcc.gnu.org/faq.html#dso
20              
21               - C providers are not affected. Third party libraries linked to the provider libraries
22 konrad.r 1.1    behave unchanged - they are shared amongst providers. 
23              

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2