From 23bbefd4a22a85738dbde4a9bb070b14b75d9e42 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Thu, 12 Sep 2013 10:06:03 +0000 Subject: [PATCH] trying to get atomic circular fifo git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@663 951219d9-93cf-4727-9268-0efd64621fa3 --- .../commonFiles/sls_detector_defs.h | 1 + .../bin/eigerDetectorServer | Bin 65515 -> 65275 bytes .../slsDetectorFunctionList.h | 2 + .../slsReceiver/circularFifo.h | 122 +++++++++++++++++- 4 files changed, 118 insertions(+), 7 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index 10c704b2b..150109dbc 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -154,6 +154,7 @@ typedef struct { int ymax; /**< is the roi ymax (in channel number)*/ } ROI ; + /* /\* */ /* @short structure for a generic integer array */ /* *\/ */ diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 4edbb70d8bf7f78a2ad9b85eb5c23d81dbb2131f..93bbce12bda63e2b5d05e05104a0eaa4b6cecd1a 100755 GIT binary patch delta 17271 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 delta 17137 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 #include diff --git a/slsDetectorSoftware/slsReceiver/circularFifo.h b/slsDetectorSoftware/slsReceiver/circularFifo.h index 154c89117..3c4c05670 100644 --- a/slsDetectorSoftware/slsReceiver/circularFifo.h +++ b/slsDetectorSoftware/slsReceiver/circularFifo.h @@ -3,11 +3,11 @@ * Do with source-code as you will. No requirement to keep this * header if need to use it/change it/ or do whatever with it * -* Note that there is No guarantee that this code will work +* Note that there is No guarantee that this code will work * and I take no responsibility for this code and any problems you * might get if using it. The code is highly platform dependent! * -* Code & platform dependent issues with it was originally +* Code & platform dependent issues with it was originally * published at http://www.kjellkod.cc/threadsafecircularqueue * 2009-11-02 * @author Kjell Hedstr�m, hedstrom@kjellkod.cc */ @@ -20,7 +20,7 @@ #include using namespace std; -/** Circular Fifo (a.k.a. Circular Buffer) +/** Circular Fifo (a.k.a. Circular Buffer) * Thread safe for one reader, and one writer */ template class CircularFifo { @@ -34,10 +34,10 @@ public: bool push(Element*& item_); bool pop(Element*& item_); - + bool isEmpty() const; bool isFull() const; - + private: volatile unsigned int tail; // input index vector array; @@ -50,7 +50,7 @@ private: -/** Producer only: Adds item to the circular queue. +/** Producer only: Adds item to the circular queue. * If queue is full at 'push' operation no update/overwrite * will happen, it is up to the caller to handle this case * @@ -124,10 +124,118 @@ unsigned int CircularFifo::increment(unsigned int idx_) const // index++; // if(index == array.lenght) -> index = 0; // - //or as written below: + //or as written below: // index = (index+1) % array.length idx_ = (idx_+1) % Capacity; return idx_; } #endif /* CIRCULARFIFO_H_ */ + + + + + +/* +#ifndef CIRCULARFIFO_H_ +#define CIRCULARFIFO_H_ + +#include "sls_detector_defs.h" + +#include "/usr/include/alsa/atomic.h" +#include +using namespace std; + +template +class CircularFifo { +public: + + CircularFifo(unsigned int Size) : tail(0), head(0){ + Capacity = Size + 1; + array.resize(Capacity); + } + virtual ~CircularFifo() {} + + bool push(Element*& item_); + bool pop(Element*& item_); + + bool wasEmpty() const; + bool wasFull() const; + bool isLockFree() const; + +private: + vector array; + unsigned int Capacity; + + std::atomic tail; // input index + std::atomic head; // output index + + unsigned int increment(unsigned int idx_) const; +}; + + +template +bool CircularFifo::push(Element*& item_) +{ + auto currentTail = tail.load(); + auto nextTail = increment(currentTail); + if(nextTail != head.load()) + { + array[currentTail] = item_; + tail.store(nextTail); + return true; + } + + // queue was full + return false; +} + + +template +bool CircularFifo::pop(Element*& item_) +{ + const auto currentHead = head.load(); + if(currentHead == tail.load()) + return false; // empty queue + + item_ = array[currentHead]; + head.store(increment(currentHead)); + return true; +} + + +template +bool CircularFifo::wasEmpty() const +{ + return (head.load() == tail.load()); +} + + +template +bool CircularFifo::wasFull() const +{ + const auto nextTail = increment(tail.load()); + return (nextTail == head.load()); +} + +template +bool CircularFifo::isLockFree() const +{ + return (tail.is_lock_free() && head.is_lock_free()); +} + + +template +unsigned int CircularFifo::increment(unsigned int idx_) const +{ + // increment or wrap + // ================= + // index++; + // if(index == array.lenght) -> index = 0; + // + //or as written below: + // index = (index+1) % array.length + return (idx_ + 1) % Capacity; +} + +#endif */