summaryrefslogtreecommitdiff
path: root/ace/Timeprobe.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Timeprobe.h')
-rw-r--r--ace/Timeprobe.h249
1 files changed, 0 insertions, 249 deletions
diff --git a/ace/Timeprobe.h b/ace/Timeprobe.h
deleted file mode 100644
index 61476dc74af..00000000000
--- a/ace/Timeprobe.h
+++ /dev/null
@@ -1,249 +0,0 @@
-// $Id$
-
-#if !defined (ACE_TIMEPROBE_H)
-#define ACE_TIMEPROBE_H
-
-// This class is compiled only when ACE_COMPILE_TIMEPROBES is defined
-#if defined (ACE_COMPILE_TIMEPROBES)
-
-#include "ace/Malloc.h"
-
-// = Event Descriptions
-struct ACE_Event_Descriptions
-{
- const char **descriptions_;
- // Event descriptions
-
- u_long minimum_id_;
- // Minimum id of this description set
-
- int operator== (const ACE_Event_Descriptions &rhs) const
- {
- return
- this->minimum_id_ == rhs.minimum_id_ &&
- this->descriptions_ == rhs.descriptions_;
- }
- // Comparison
-};
-
-// = Time probe record
-struct ACE_timeprobe_t
-{
- union event
- {
- u_long event_number_;
- const char *event_description_;
- };
- // Events are record as strings or numbers
-
- enum event_type
- {
- NUMBER,
- STRING
- };
- // Type of event
-
- event event_;
- // Event
-
- event_type event_type_;
- // Event type
-
- ACE_hrtime_t time_;
- // Timestamp
-
- ACE_thread_t thread_;
- // Id of thread posting the time probe
-};
-
-template <class ACE_LOCK>
-class ACE_Timeprobe
-{
- // = TITLE
- //
- // This class is used to instrument code. This is accomplished
- // by inserting time probes at different location in the code.
- // ACE_Timeprobe then measures the time difference between two
- // time probes.
- //
- // = DESCRIPTION
- //
- // This class provides a lightweight implementation for
- // measuring the time required to execute code between two time
- // probes. When a time probe executes, it records the time, the
- // id of the calling thread, and an event description. The
- // event description can either be an unsigned long or a string
- // (char *). If string are used, care must be taken cause only
- // pointer copies are done and the string data is *not* copied.
- //
- // The recorded time probes can then be printed by calling
- // print_times(). If you have used unsigned longs as event
- // descriptions in any of your time probes, you must have
- // provided an event description table that maps the unsigned
- // longs to readable strings. This map is a simple array of
- // strings, and the event number is used as the index into the
- // array when looking for the event description. If you have
- // only used strings for the event description, this map is not
- // necessary.
- //
- // Multiple maps can also be used to chunk up the time probes.
- // Each one can be added by calling event_descriptions().
- // Different tables are used internally by consulting the
- // minimum_id for each table. It is up to the user to make sure
- // that multiple tables do not share the same event id range.
-public:
-
- enum
- {
- ACE_DEFAULT_TABLE_SIZE = 4 * 1024
- // Default size of the slots in Timeprobe
- };
-
- ACE_Timeprobe (u_long size = ACE_DEFAULT_TABLE_SIZE,
- ACE_Allocator *alloc = 0);
- // Create Timeprobes with <size> slots, using <alloc> for the
- // allocator.
-
- ~ACE_Timeprobe (void);
- // Destructor
-
- void timeprobe (u_long event);
- // Record a time. <event> is used to describe this time probe.
-
- void timeprobe (const char *id);
- // Record a time. <id> is used to describe this time probe.
-
- int event_descriptions (const char **descriptions,
- u_long minimum_id);
- // Record event descriptions.
-
- void print_times (void);
- // Print the time probes.
-
- void reset (void);
- // Reset the slots. All old time probes will be lost.
-
-protected:
-
- typedef ACE_Timeprobe<ACE_LOCK> SELF;
- // Self
-
- typedef ACE_Unbounded_Set<ACE_Event_Descriptions> EVENT_DESCRIPTIONS;
- // We can hold multiple event description tables
-
- EVENT_DESCRIPTIONS event_descriptions_;
- // Event Descriptions
-
- EVENT_DESCRIPTIONS sorted_event_descriptions_;
- // Sorted Event Descriptions
-
- u_int *current_slot_vme_address_;
- // Added sections below here to make compatible with the VMETRO
- // board test.
-
- ACE_Timeprobe (const ACE_Timeprobe &);
- // Not implemented.
-
- const char *find_description_i (u_long i);
- // Find description of event <i>
-
- void sort_event_descriptions_i (void);
- // Sort event descriptions
-
- ACE_timeprobe_t *timeprobes_;
- // Time probe slots
-
- ACE_Allocator *allocator_;
- // Pointer to a memory allocator.
-
- ACE_LOCK lock_;
- // Synchronization variable.
-
- u_long max_size_;
- // Max size of timestamp table
-
- u_long current_size_;
- // Current size of timestamp table
-};
-
-template <class Timeprobe>
-class ACE_Function_Timeprobe
-{
- // = TITLE
- //
- // Auto pointer like time probes. It will record <event> on
- // construction and <event + 1> on destruction.
- //
-public:
- ACE_Function_Timeprobe (Timeprobe &timeprobe,
- u_long event);
-
- ~ACE_Function_Timeprobe (void);
-
-protected:
-
- Timeprobe &timeprobe_;
-
- u_long event_;
-};
-
-#include "ace/Synch.h"
-#include "ace/Singleton.h"
-
-// If ACE_MT_TIMEPROBES is defined, use a Thread_Mutex to lock the
-// internal state of ACE_Timerprobe. This allows multiple threads to
-// use the same ACE_Timerprobe.
-# if defined (ACE_MT_TIMEPROBES)
-typedef ACE_SYNCH_MUTEX ACE_TIMEPROBE_MUTEX;
-# else /* ACE_MT_TIMEPROBES */
-typedef ACE_SYNCH_NULL_MUTEX ACE_TIMEPROBE_MUTEX;
-# endif /* ACE_MT_TIMEPROBES */
-
-typedef ACE_Timeprobe<ACE_TIMEPROBE_MUTEX> ACE_TIMEPROBE_WITH_LOCKING;
-
-// If ACE_TSS_TIMEPROBES is defined, store the ACE_Timeprobe singleton
-// in thread specific storage. This allows multiple threads to use
-// their own instance of ACE_Timerprobe, without interfering with each
-// other.
-# if defined (ACE_TSS_TIMEPROBES)
-typedef ACE_TSS_Singleton<ACE_TIMEPROBE_WITH_LOCKING, ACE_SYNCH_NULL_MUTEX> ACE_TIMEPROBE_SINGLETON;
-# else /* ACE_TSS_TIMEPROBES */
-typedef ACE_Singleton<ACE_TIMEPROBE_WITH_LOCKING, ACE_SYNCH_MUTEX> ACE_TIMEPROBE_SINGLETON;
-# endif /* ACE_TSS_TIMEPROBES */
-
-#if defined (__ACE_INLINE__)
-#include "ace/Timeprobe.i"
-#endif /* __ACE_INLINE__ */
-
-#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
-#include "ace/Timeprobe.cpp"
-#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
-
-#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
-#pragma implementation ("Timeprobe.cpp")
-#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
-
-#endif /* ACE_COMPILE_TIMEPROBES */
-
-// If ACE_ENABLE_TIMEPROBES is defined, the macros below will
-// work. Otherwise, they just vanish. Using this macro, you can
-// control which files/libraries are probed.
-#if defined (ACE_ENABLE_TIMEPROBES)
-
-# define ACE_TIMEPROBE_RESET ACE_TIMEPROBE_SINGLETON::instance ()->reset ()
-# define ACE_TIMEPROBE(id) ACE_TIMEPROBE_SINGLETON::instance ()->timeprobe (id)
-# define ACE_TIMEPROBE_PRINT ACE_TIMEPROBE_SINGLETON::instance ()->print_times ()
-# define ACE_TIMEPROBE_EVENT_DESCRIPTIONS(descriptions, minimum_id) static int ace_timeprobe_##descriptions##_return = ACE_TIMEPROBE_SINGLETON::instance ()->event_descriptions (descriptions, minimum_id)
-# define ACE_FUNCTION_TIMEPROBE(X) ACE_Function_Timeprobe<ACE_TIMEPROBE_WITH_LOCKING> function_timeprobe (*ACE_TIMEPROBE_SINGLETON::instance (), X)
-
-#else /* ACE_ENABLE_TIMEPROBES */
-
-# define ACE_TIMEPROBE_RESET
-# define ACE_TIMEPROBE(id)
-# define ACE_TIMEPROBE_PRINT
-# define ACE_TIMEPROBE_EVENT_DESCRIPTIONS(descriptions, minimum_id)
-# define ACE_FUNCTION_TIMEPROBE(X)
-
-#endif /* ACE_ENABLE_TIMEPROBES */
-
-#endif /* ACE_TIMEPROBE_H */