From: khizmax Date: Sat, 27 Sep 2014 15:42:13 +0000 (+0400) Subject: Move cds/intrusive/queue_stat.h to cds/intrusive/details directory X-Git-Tag: v2.0.0~276 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f9c9349624ddf418216d00cd16b303e42ce34813;p=libcds.git Move cds/intrusive/queue_stat.h to cds/intrusive/details directory --- diff --git a/cds/container/moir_queue.h b/cds/container/moir_queue.h index 072fe64c..e0dd3313 100644 --- a/cds/container/moir_queue.h +++ b/cds/container/moir_queue.h @@ -5,7 +5,7 @@ #include #include -#include +#include #include #include #include diff --git a/cds/container/rwqueue.h b/cds/container/rwqueue.h index 0c061c16..4b687dc9 100644 --- a/cds/container/rwqueue.h +++ b/cds/container/rwqueue.h @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cds/intrusive/basket_queue.h b/cds/intrusive/basket_queue.h index 331127a0..c556e816 100644 --- a/cds/intrusive/basket_queue.h +++ b/cds/intrusive/basket_queue.h @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cds/intrusive/details/queue_stat.h b/cds/intrusive/details/queue_stat.h new file mode 100644 index 00000000..0de77693 --- /dev/null +++ b/cds/intrusive/details/queue_stat.h @@ -0,0 +1,93 @@ +//$$CDS-header$$ + +#ifndef __CDS_INTRUSIVE_DETAILS_QUEUE_STAT_H +#define __CDS_INTRUSIVE_DETAILS_QUEUE_STAT_H + +#include + +namespace cds { namespace intrusive { + + /// Queue internal statistics. May be used for debugging or profiling + /** @ingroup cds_intrusive_helper + Template argument \p Counter defines type of counter. + Default is cds::atomicity::event_counter, that is weak, i.e. it is not guaranteed + strict event counting. + You may use stronger type of counter like as cds::atomicity::item_counter, + or even integral type, for example, \p int. + */ + template + struct queue_stat + { + typedef Counter counter_type ; ///< Counter type + + counter_type m_EnqueueCount ; ///< Enqueue call count + counter_type m_DequeueCount ; ///< Dequeue call count + counter_type m_EnqueueRace ; ///< Count of enqueue race conditions encountered + counter_type m_DequeueRace ; ///< Count of dequeue race conditions encountered + counter_type m_AdvanceTailError ; ///< Count of "advance tail failed" events + counter_type m_BadTail ; ///< Count of events "Tail is not pointed to the last item in the queue" + + /// Register enqueue call + void onEnqueue() { ++m_EnqueueCount; } + /// Register dequeue call + void onDequeue() { ++m_DequeueCount; } + /// Register enqueue race event + void onEnqueueRace() { ++m_EnqueueRace; } + /// Register dequeue race event + void onDequeueRace() { ++m_DequeueRace; } + /// Register "advance tail failed" event + void onAdvanceTailFailed() { ++m_AdvanceTailError; } + /// Register event "Tail is not pointed to last item in the queue" + void onBadTail() { ++m_BadTail; } + + //@cond + void reset() + { + m_EnqueueCount.reset(); + m_DequeueCount.reset(); + m_EnqueueRace.reset(); + m_DequeueRace.reset(); + m_AdvanceTailError.reset(); + m_BadTail.reset(); + } + + queue_stat& operator +=( queue_stat const& s ) + { + m_EnqueueCount += s.m_EnqueueCount.get(); + m_DequeueCount += s.m_DequeueCount.get(); + m_EnqueueRace += s.m_EnqueueRace.get(); + m_DequeueRace += s.m_DequeueRace.get(); + m_AdvanceTailError += s.m_AdvanceTailError.get(); + m_BadTail += s.m_BadTail.get(); + + return *this; + } + //@endcond + }; + + /// Dummy queue statistics - no counting is performed. Support interface like \ref queue_stat + /** @ingroup cds_intrusive_helper + */ + struct queue_dummy_stat + { + //@cond + void onEnqueue() {} + void onDequeue() {} + void onEnqueueRace() {} + void onDequeueRace() {} + void onAdvanceTailFailed() {} + void onBadTail() {} + + void reset() {} + queue_dummy_stat& operator +=( queue_dummy_stat const& s ) + { + return *this; + } + //@endcond + }; + + +}} // namespace cds::intrusive + + +#endif // #ifndef __CDS_INTRUSIVE_DETAILS_QUEUE_STAT_H diff --git a/cds/intrusive/msqueue.h b/cds/intrusive/msqueue.h index f81a1ad6..76a0763d 100644 --- a/cds/intrusive/msqueue.h +++ b/cds/intrusive/msqueue.h @@ -5,7 +5,7 @@ #include #include -#include +#include #include namespace cds { namespace intrusive { diff --git a/cds/intrusive/optimistic_queue.h b/cds/intrusive/optimistic_queue.h index d0d3cc9e..d22c7a6a 100644 --- a/cds/intrusive/optimistic_queue.h +++ b/cds/intrusive/optimistic_queue.h @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include namespace cds { namespace intrusive { diff --git a/cds/intrusive/queue_stat.h b/cds/intrusive/queue_stat.h deleted file mode 100644 index cd71314f..00000000 --- a/cds/intrusive/queue_stat.h +++ /dev/null @@ -1,93 +0,0 @@ -//$$CDS-header$$ - -#ifndef __CDS_INTRUSIVE_QUEUE_STAT_H -#define __CDS_INTRUSIVE_QUEUE_STAT_H - -#include - -namespace cds { namespace intrusive { - - /// Queue internal statistics. May be used for debugging or profiling - /** @ingroup cds_intrusive_helper - Template argument \p Counter defines type of counter. - Default is cds::atomicity::event_counter, that is weak, i.e. it is not guaranteed - strict event counting. - You may use stronger type of counter like as cds::atomicity::item_counter, - or even integral type, for example, \p int. - */ - template - struct queue_stat - { - typedef Counter counter_type ; ///< Counter type - - counter_type m_EnqueueCount ; ///< Enqueue call count - counter_type m_DequeueCount ; ///< Dequeue call count - counter_type m_EnqueueRace ; ///< Count of enqueue race conditions encountered - counter_type m_DequeueRace ; ///< Count of dequeue race conditions encountered - counter_type m_AdvanceTailError ; ///< Count of "advance tail failed" events - counter_type m_BadTail ; ///< Count of events "Tail is not pointed to the last item in the queue" - - /// Register enqueue call - void onEnqueue() { ++m_EnqueueCount; } - /// Register dequeue call - void onDequeue() { ++m_DequeueCount; } - /// Register enqueue race event - void onEnqueueRace() { ++m_EnqueueRace; } - /// Register dequeue race event - void onDequeueRace() { ++m_DequeueRace; } - /// Register "advance tail failed" event - void onAdvanceTailFailed() { ++m_AdvanceTailError; } - /// Register event "Tail is not pointed to last item in the queue" - void onBadTail() { ++m_BadTail; } - - //@cond - void reset() - { - m_EnqueueCount.reset(); - m_DequeueCount.reset(); - m_EnqueueRace.reset(); - m_DequeueRace.reset(); - m_AdvanceTailError.reset(); - m_BadTail.reset(); - } - - queue_stat& operator +=( queue_stat const& s ) - { - m_EnqueueCount += s.m_EnqueueCount.get(); - m_DequeueCount += s.m_DequeueCount.get(); - m_EnqueueRace += s.m_EnqueueRace.get(); - m_DequeueRace += s.m_DequeueRace.get(); - m_AdvanceTailError += s.m_AdvanceTailError.get(); - m_BadTail += s.m_BadTail.get(); - - return *this; - } - //@endcond - }; - - /// Dummy queue statistics - no counting is performed. Support interface like \ref queue_stat - /** @ingroup cds_intrusive_helper - */ - struct queue_dummy_stat - { - //@cond - void onEnqueue() {} - void onDequeue() {} - void onEnqueueRace() {} - void onDequeueRace() {} - void onAdvanceTailFailed() {} - void onBadTail() {} - - void reset() {} - queue_dummy_stat& operator +=( queue_dummy_stat const& s ) - { - return *this; - } - //@endcond - }; - - -}} // namespace cds::intrusive - - -#endif // #ifndef __CDS_INTRUSIVE_QUEUE_STAT_H diff --git a/projects/Win/vc12/cds.vcxproj b/projects/Win/vc12/cds.vcxproj index 207785a0..6dbf8cbe 100644 --- a/projects/Win/vc12/cds.vcxproj +++ b/projects/Win/vc12/cds.vcxproj @@ -743,6 +743,7 @@ + @@ -937,7 +938,6 @@ - diff --git a/projects/Win/vc12/cds.vcxproj.filters b/projects/Win/vc12/cds.vcxproj.filters index 0a381360..15711764 100644 --- a/projects/Win/vc12/cds.vcxproj.filters +++ b/projects/Win/vc12/cds.vcxproj.filters @@ -590,9 +590,6 @@ Header Files\cds\intrusive - - Header Files\cds\intrusive - Header Files\cds\intrusive @@ -1280,5 +1277,8 @@ Header Files\cds\intrusive\details + + Header Files\cds\intrusive\details + \ No newline at end of file