Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
System.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_SYSTEM_H
2 #define GAUDIKERNEL_SYSTEM_H
3 
4 // Framework include files
5 #include "GaudiKernel/Kernel.h"
6 // STL include files
7 #include <string>
8 #include <typeinfo>
9 #include <vector>
10 
11 #include "GaudiKernel/ModuleInfo.h"
12 #include "GaudiKernel/Timing.h"
13 
14 #ifdef __linux
15 # include <pthread.h>
16 # ifndef __APPLE__
17 # include <execinfo.h>
18 # endif
19 #endif
20 
29 namespace System {
31  typedef void* ImageHandle;
33  typedef void* ProcessHandle;
35  typedef unsigned long ( *EntryPoint )( const unsigned long iid, void** ppvObject );
37  typedef void* ( *Creator )();
39  GAUDI_API unsigned long loadDynamicLib( const std::string& name, ImageHandle* handle );
41  GAUDI_API unsigned long unloadDynamicLib( ImageHandle handle );
43  GAUDI_API unsigned long getProcedureByName( ImageHandle handle, const std::string& name, EntryPoint* pFunction );
45  GAUDI_API unsigned long getProcedureByName( ImageHandle handle, const std::string& name, Creator* pFunction );
47  GAUDI_API unsigned long getLastError();
51  GAUDI_API const std::string getErrorString( unsigned long error );
54  GAUDI_API const std::string typeinfoName( const char* );
58  GAUDI_API const std::string& osName();
64  // 0 = 80386 instruction set
65  // 1 or above = SSE (XMM) supported by CPU (not testing for O.S. support)
66  // 2 or above = SSE2
67  // 3 or above = SSE3
68  // 4 or above = Supplementary SSE3 (SSSE3)
69  // 5 or above = SSE4.1
70  // 6 or above = SSE4.2
71  // 7 or above = AVX supported by CPU and operating system
72  // 8 or above = AVX2
73  // 9 or above = AVX512F
80  GAUDI_API long argc();
84  GAUDI_API char** argv();
86  GAUDI_API std::string getEnv( const char* var );
89  GAUDI_API bool getEnv( const char* var, std::string& value );
90  inline bool getEnv( const std::string& var, std::string& value ) { return getEnv( var.c_str(), value ); }
98  GAUDI_API int setEnv( const std::string& name, const std::string& value, int overwrite = 1 );
100  GAUDI_API bool isEnvSet( const char* var );
101 #ifdef __linux
102  typedef pthread_t ThreadHandle;
105  inline ThreadHandle threadSelf() { return pthread_self(); }
106 #else
107  typedef void* ThreadHandle;
110  inline ThreadHandle threadSelf() { return (void*)0; }
111 #endif
112  GAUDI_API int backTrace( void** addresses, const int depth );
113  GAUDI_API bool backTrace( std::string& btrace, const int depth, const int offset = 0 );
114  GAUDI_API bool getStackLevel( void* addresses, void*& addr, std::string& fnc, std::string& lib );
115 } // namespace System
116 #endif // SYSTEM_SYSTEM_H
GAUDI_API std::string getEnv(const char *var)
get a particular environment variable (returning "UNKNOWN" if not set)
Definition: System.cpp:380
GAUDI_API long argc()
Number of arguments passed to the commandline (==numCmdLineArgs()); just to match argv call...
Definition: System.cpp:352
GAUDI_API char ** argv()
char** command line arguments including executable name as arg[0]; You may not modify them! ...
Definition: System.cpp:361
GAUDI_API const std::string getErrorString(unsigned long error)
Retrieve error code as string for a given error.
Definition: System.cpp:279
GAUDI_API int setEnv(const std::string &name, const std::string &value, int overwrite=1)
Set an environment variables.
Definition: System.cpp:494
GAUDI_API unsigned long getLastError()
Get last system known error.
Definition: System.cpp:263
GAUDI_API unsigned long getProcedureByName(ImageHandle handle, const std::string &name, EntryPoint *pFunction)
Get a specific function defined in the DLL.
Definition: System.cpp:214
GAUDI_API bool getStackLevel(void *addresses, void *&addr, std::string &fnc, std::string &lib)
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:309
GAUDI_API int instructionsetLevel()
Instruction Set "Level".
Definition: System.cpp:337
Note: OS specific details for environment resolution.
Definition: Debugger.h:19
void * ThreadHandle
A Thread handle.
Definition: System.h:108
GAUDI_API const std::string & accountName()
User login name.
Definition: System.cpp:343
void * ImageHandle
Definition of an image handle.
Definition: ModuleInfo.h:30
GAUDI_API int backTrace(void **addresses, const int depth)
STL class.
GAUDI_API long numCmdLineArgs()
Number of arguments passed to the commandline.
Definition: System.cpp:349
GAUDI_API const std::string & osName()
OS name.
Definition: System.cpp:320
GAUDI_API unsigned long unloadDynamicLib(ImageHandle handle)
unload dynamic link library
Definition: System.cpp:191
GAUDI_API bool isEnvSet(const char *var)
Check if an environment variable is set or not.
Definition: System.cpp:400
GAUDI_API const std::string & hostName()
Host name.
Definition: System.cpp:314
void *(* Creator)()
Definition of the "generic" DLL entry point function.
Definition: System.h:37
ThreadHandle threadSelf()
thread handle "accessor"
Definition: System.h:110
T c_str(T...args)
GAUDI_API const std::vector< std::string > cmdLineArgs()
Command line arguments including executable name as arg[0] as vector of strings.
Definition: System.cpp:355
GAUDI_API const std::string & osVersion()
OS version.
Definition: System.cpp:326
GAUDI_API const std::string getLastErrorString()
Get last system error as string.
Definition: System.cpp:273
GAUDI_API const std::string & machineType()
Machine type.
Definition: System.cpp:332
#define GAUDI_API
Definition: Kernel.h:71
void * ProcessHandle
Definition of the process handle.
Definition: ModuleInfo.h:32
GAUDI_API unsigned long loadDynamicLib(const std::string &name, ImageHandle *handle)
Load dynamic link library.
Definition: System.cpp:146
unsigned long(* EntryPoint)(const unsigned long iid, void **ppvObject)
Definition of the "generic" DLL entry point function.
Definition: System.h:35