00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef XLALGSL_H
00022 #define XLALGSL_H
00023
00024 #include <gsl/gsl_errno.h>
00025 #include <lal/LALConfig.h>
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 NRCSID( XLALGSLH, "$Id: XLALGSL.h,v 1.4 2007/07/07 21:31:20 duncan Exp $" );
00032
00033 #ifdef LAL_PTHREAD_LOCK
00034 #include <pthread.h>
00035 extern pthread_mutex_t lalGSLPthreadMutex;
00036 #define XLALGSL_PTHREAD_MUTEX_LOCK pthread_mutex_lock( &lalGSLPthreadMutex )
00037 #define XLALGSL_PTHREAD_MUTEX_UNLOCK pthread_mutex_unlock( &lalGSLPthreadMutex )
00038 #else
00039 #define XLALGSL_PTHREAD_MUTEX_LOCK ((void)(0))
00040 #define XLALGSL_PTHREAD_MUTEX_UNLOCK ((void)(0))
00041 #endif
00042
00043 #define XLAL_CALLGSL( statement ) \
00044 do { \
00045 gsl_error_handler_t *saveGSLErrorHandler_; \
00046 XLALGSL_PTHREAD_MUTEX_LOCK; \
00047 saveGSLErrorHandler_ = gsl_set_error_handler_off(); \
00048 statement; \
00049 gsl_set_error_handler( saveGSLErrorHandler_ ); \
00050 XLALGSL_PTHREAD_MUTEX_UNLOCK; \
00051 } while (0)
00052
00053
00054 #ifdef __cplusplus
00055 }
00056 #endif
00057
00058 #endif