00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef ACE_TIMEPROBE_H
00039 #define ACE_TIMEPROBE_H
00040 #include "ace/pre.h"
00041
00042 #include "ace/config-lite.h"
00043 #include "ace/ACE_export.h"
00044 #include "ace/Malloc_Allocator.h"
00045
00046 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00047 # pragma once
00048 #endif
00049
00050
00051 #if defined (ACE_ENABLE_TIMEPROBES)
00052 #if !defined (ACE_COMPILE_TIMEPROBES)
00053 #define ACE_COMPILE_TIMEPROBES
00054 #endif
00055 #endif
00056
00057 #if defined (ACE_COMPILE_TIMEPROBES)
00058
00059 #include "ace/OS_NS_time.h"
00060 #include "ace/OS_NS_Thread.h"
00061
00062 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00063
00064
00065
00066
00067
00068
00069 class ACE_Export ACE_Event_Descriptions
00070 {
00071 public:
00072
00073 const char **descriptions_;
00074
00075
00076 u_long minimum_id_;
00077
00078
00079 bool operator== (const ACE_Event_Descriptions &rhs) const;
00080 };
00081
00082
00083
00084
00085
00086
00087 class ACE_Export ACE_timeprobe_t
00088 {
00089 public:
00090
00091 union event
00092 {
00093 u_long event_number_;
00094 const char *event_description_;
00095 };
00096
00097
00098 enum event_type
00099 {
00100 NUMBER,
00101 STRING
00102 };
00103
00104
00105 event event_;
00106
00107
00108 event_type event_type_;
00109
00110
00111 ACE_hrtime_t time_;
00112
00113
00114 ACE_thread_t thread_;
00115 };
00116
00117 ACE_END_VERSIONED_NAMESPACE_DECL
00118
00119 #if defined (__ACE_INLINE__)
00120 #include "ace/Timeprobe.inl"
00121 #endif
00122
00123 #include "ace/Synch_Traits.h"
00124 #include "ace/Null_Mutex.h"
00125 #include "ace/Singleton.h"
00126 #include "ace/Timeprobe_T.h"
00127
00128 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00129
00130
00131
00132
00133 # if defined (ACE_MT_TIMEPROBES)
00134 typedef ACE_SYNCH_MUTEX ACE_TIMEPROBE_MUTEX;
00135 # else
00136 typedef ACE_SYNCH_NULL_MUTEX ACE_TIMEPROBE_MUTEX;
00137 # endif
00138
00139 typedef ACE_New_Allocator ACE_TIMEPROBE_ALLOCATOR;
00140
00141 typedef ACE_Timeprobe_Ex<ACE_TIMEPROBE_MUTEX, ACE_TIMEPROBE_ALLOCATOR>
00142 ACE_TIMEPROBE_WITH_LOCKING;
00143
00144
00145
00146
00147
00148
00149 # if defined (ACE_TSS_TIMEPROBES)
00150 # define ACE_TIMEPROBE_SINGLETON_TYPE ACE_TSS_Singleton
00151 # define ACE_TIMEPROBE_SINGLETON_LOCK_TYPE ACE_SYNCH_NULL_MUTEX
00152 # else
00153 # define ACE_TIMEPROBE_SINGLETON_TYPE ACE_Singleton
00154 # define ACE_TIMEPROBE_SINGLETON_LOCK_TYPE ACE_SYNCH_MUTEX
00155 # endif
00156
00157 ACE_SINGLETON_DECLARE (ACE_TIMEPROBE_SINGLETON_TYPE, \
00158 ACE_TIMEPROBE_WITH_LOCKING, \
00159 ACE_TIMEPROBE_SINGLETON_LOCK_TYPE)
00160
00161 typedef ACE_TIMEPROBE_SINGLETON_TYPE<ACE_TIMEPROBE_WITH_LOCKING, ACE_TIMEPROBE_SINGLETON_LOCK_TYPE>
00162 ACE_TIMEPROBE_SINGLETON;
00163
00164 ACE_END_VERSIONED_NAMESPACE_DECL
00165
00166 #endif
00167
00168
00169
00170
00171 #if defined (ACE_ENABLE_TIMEPROBES) && defined (ACE_COMPILE_TIMEPROBES)
00172
00173 # define ACE_TIMEPROBE_RESET ACE_TIMEPROBE_SINGLETON::instance ()->reset ()
00174
00175 # define ACE_TIMEPROBE(id) ACE_TIMEPROBE_SINGLETON::instance ()->timeprobe (id)
00176
00177 # define ACE_TIMEPROBE_PRINT ACE_TIMEPROBE_SINGLETON::instance ()->print_times ()
00178
00179 # define ACE_TIMEPROBE_PRINT_ABSOLUTE ACE_TIMEPROBE_SINGLETON::instance ()->print_absolute_times ()
00180
00181 # define ACE_TIMEPROBE_EVENT_DESCRIPTIONS(descriptions, minimum_id) \
00182 static int ace_timeprobe_##descriptions##_return = \
00183 ACE_TIMEPROBE_SINGLETON::instance ()->event_descriptions \
00184 (descriptions, minimum_id)
00185
00186 # define ACE_FUNCTION_TIMEPROBE(X) \
00187 ACE_Function_Timeprobe<ACE_TIMEPROBE_WITH_LOCKING> function_timeprobe \
00188 (*ACE_TIMEPROBE_SINGLETON::instance (), X)
00189
00190 #else
00191
00192 # define ACE_TIMEPROBE_RESET
00193 # define ACE_TIMEPROBE(id)
00194 # define ACE_TIMEPROBE_PRINT
00195 # define ACE_TIMEPROBE_PRINT_ABSOLUTE
00196 # define ACE_TIMEPROBE_EVENT_DESCRIPTIONS(descriptions, minimum_id)
00197 # define ACE_FUNCTION_TIMEPROBE(X)
00198
00199 #endif
00200 #include "ace/post.h"
00201 #endif