]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
change loading scheme of the HOMER library following Rubens suggestion in an attempt...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Mar 2013 10:54:38 +0000 (10:54 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 Mar 2013 10:54:38 +0000 (10:54 +0000)
HLT/BASE/AliHLTHOMERLibManager.cxx
HLT/BASE/AliHLTHOMERLibManager.h
HLT/BASE/HOMER/AliHLTHOMERLinkDef.h

index 2fec300e9d0c37d77c0accb707956e57b8eac2b2..5ef0468eef9156d685f7f15a51d4e1f8003f7586 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/** @file   AliHLTHOMERLibManager.cxx
-    @author Matthias Richter
-    @date   
-    @brief  dynamic HLT HOMER reader/writer generation and destruction.   */
-
-// see header file for class documentation
-// or
-// refer to README to build package
-// or
-// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+/// @file   AliHLTHOMERLibManager.cxx
+/// @author Matthias Richter
+/// @date   
+/// @brief  dynamic HLT HOMER reader/writer generation and destruction.
 
 #include <cerrno>
 #include <cassert>
@@ -39,6 +33,8 @@
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTHOMERLibManager)
 
+// global flag of the library status
+int AliHLTHOMERLibManager::fgLibraryStatus=0;
 // This list must be NULL terminated, since we use it as a marker to identify
 // the end of the list.
 const char* AliHLTHOMERLibManager::fgkLibraries[] = {"libAliHLTHOMER.so", "libHOMER.so", NULL};
@@ -47,7 +43,6 @@ int AliHLTHOMERLibManager::fgkLibRefCount[] = {0, 0};
 
 AliHLTHOMERLibManager::AliHLTHOMERLibManager()
   :
-  fLibraryStatus(0),
   fFctCreateReaderFromTCPPort(NULL),
   fFctCreateReaderFromTCPPorts(NULL),
   fFctCreateReaderFromBuffer(NULL),
@@ -56,26 +51,30 @@ AliHLTHOMERLibManager::AliHLTHOMERLibManager()
   fFctDeleteWriter(NULL),
   fLoadedLib(NULL)
 {
-  // see header file for class documentation
-  // or
-  // refer to README to build package
-  // or
-  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+  // constructor
+  // 
+  // Interface to the HLT Online Monitoring Including Root (HOMER) library.
+  // It allows to decouple the HLT base library from this additional library
+  // while providing the basic functionality to the component libraries
 }
 
 AliHLTHOMERLibManager::~AliHLTHOMERLibManager()
 {
-  // see header file for class documentation
-  UnloadHOMERLibrary();
+  // destructor
+  //
+  // the library load strategy has been changed in March 2013 in order to
+  // stabilize the runtime memory layout of AliRoot in an attemp to get control
+  // over memory corruptions
+  //  UnloadHOMERLibrary();
 }
 
 AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReader(const char* hostname, unsigned short port )
 {
-  // see header file for class documentation
-  if (fLibraryStatus<0) return NULL;
+  // Open Reader instance for host
+  if (fgLibraryStatus<0) return NULL;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   AliHLTHOMERReader* pReader=NULL;
@@ -88,11 +87,11 @@ AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReader(const char* hostname, unsig
 
 AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReader(unsigned int tcpCnt, const char** hostnames, unsigned short* ports)
 {
-  // see header file for class documentation
-  if (fLibraryStatus<0) return NULL;
+  // Open Reader instance for a list of hosts
+  if (fgLibraryStatus<0) return NULL;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   AliHLTHOMERReader* pReader=NULL;
@@ -106,11 +105,11 @@ AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReader(unsigned int tcpCnt, const
 
 AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReaderBuffer(const AliHLTUInt8_t* pBuffer, int size)
 {
-  // see header file for class documentation
-  if (fLibraryStatus<0) return NULL;
+  // Open Reader instance for a data buffer
+  if (fgLibraryStatus<0) return NULL;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   AliHLTHOMERReader* pReader=NULL;
@@ -123,11 +122,13 @@ AliHLTHOMERReader* AliHLTHOMERLibManager::OpenReaderBuffer(const AliHLTUInt8_t*
 
 int AliHLTHOMERLibManager::DeleteReader(AliHLTHOMERReader* pReader)
 {
-  // see header file for class documentation
-  if (fLibraryStatus<0) return fLibraryStatus;
+  // delete a reader
+
+  // the actual deletion function is inside the HOMER library
+  if (fgLibraryStatus<0) return fgLibraryStatus;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   if (fFctDeleteReader!=NULL) {
@@ -139,11 +140,11 @@ int AliHLTHOMERLibManager::DeleteReader(AliHLTHOMERReader* pReader)
 
 AliHLTHOMERWriter* AliHLTHOMERLibManager::OpenWriter()
 {
-  // see header file for class documentation
-  if (fLibraryStatus<0) return NULL;
+  // open a Writer instance
+  if (fgLibraryStatus<0) return NULL;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   AliHLTHOMERWriter* pWriter=NULL;
@@ -157,10 +158,10 @@ AliHLTHOMERWriter* AliHLTHOMERLibManager::OpenWriter()
 int AliHLTHOMERLibManager::DeleteWriter(AliHLTHOMERWriter* pWriter)
 {
   // see header file for class documentation
-  if (fLibraryStatus<0) return fLibraryStatus;
+  if (fgLibraryStatus<0) return fgLibraryStatus;
 
-  if (fLibraryStatus==0) {
-    fLibraryStatus=LoadHOMERLibrary();
+  if (fgLibraryStatus==0) {
+    fgLibraryStatus=LoadHOMERLibrary();
   }
   
   if (fFctDeleteWriter!=NULL) {
@@ -172,7 +173,9 @@ int AliHLTHOMERLibManager::DeleteWriter(AliHLTHOMERWriter* pWriter)
 
 int AliHLTHOMERLibManager::LoadHOMERLibrary()
 {
-  // see header file for class documentation
+  // delete a writer
+
+  // the actual deletion function is inside the HOMER library
   int iResult=-EBADF;
   const char** library=&fgkLibraries[0];
   int* refcount = &fgkLibRefCount[0];
@@ -223,7 +226,7 @@ int AliHLTHOMERLibManager::LoadHOMERLibrary()
 
 int AliHLTHOMERLibManager::UnloadHOMERLibrary()
 {
-  // see header file for class documentation
+  // unload HOMER library
   int iResult=0;
   
   if (fLoadedLib != NULL)
index 96e940d4d0fc03516a2a56e73cb0d3494060e45a..559323028e947b93125484c398055eb57aebfbd2 100644 (file)
@@ -1,6 +1,6 @@
 
 //-*- Mode: C++ -*-
-// @(#) $Id$
+// $Id$
 
 #ifndef ALIHLTHOMERLIBMANAGER_H
 #define ALIHLTHOMERLIBMANAGER_H
@@ -8,17 +8,11 @@
  * ALICE Experiment at CERN, All rights reserved.                         *
  * See cxx source for full Copyright notice                               */
 
-/** @file   AliHLTHOMERLibManager.h
-    @author Matthias Richter
-    @date   
-    @brief  dynamic HLT HOMER reader/writer generation and destruction
-
-// see below for class documentation
-// or
-// refer to README to build package
-// or
-// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-                                                                          */
+/// @file   AliHLTHOMERLibManager.h
+/// @author Matthias Richter
+/// @date   
+/// @brief  dynamic HLT HOMER reader/writer generation and destruction
+
 #include "AliHLTDataTypes.h"
 #include "TObject.h" // for ClassDef/Imp
 
@@ -140,7 +134,7 @@ class AliHLTHOMERLibManager {
   int UnloadHOMERLibrary();
 
   /** status of the loading of the HOMER library */
-  int fLibraryStatus; //!transient
+static  int fgLibraryStatus; //!transient
 
   /** entry in the HOMER library */
   void (*fFctCreateReaderFromTCPPort)(); //!transient
index 3a73c136196d5ad5ca0608f7b668c4c14b8481f5..ca3d8545b985f3095ffb7f8c596fd263a1dde713 100644 (file)
@@ -9,7 +9,7 @@
 #pragma link C++ class AliHLTHOMERWriter+;
 
 
-#pragma link C++ global gROOT;
-#pragma link C++ global gEnv;
+/* #pragma link C++ global gROOT; */
+/* #pragma link C++ global gEnv; */
 
 #endif