diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-06-22 10:38:53 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-06-27 20:01:22 -0400 | 
| commit | 03ed85a6c065896c9377db173745c511ea40bdcb (patch) | |
| tree | d012b6a0947e947e943e05aee3c4851f6dc9d8d1 /lib | |
| parent | 34fa08703676b24b8d982b4717a769d68b2df2f4 (diff) | |
lib, zebra: Add a bit of code to look at fifo
When in a dev build add a bit of code to track max
depth of a fifo and to allow zebra to report on it.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/stream.c | 13 | ||||
| -rw-r--r-- | lib/stream.h | 3 | 
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/stream.c b/lib/stream.c index aba4c20166..a172eedc99 100644 --- a/lib/stream.c +++ b/lib/stream.c @@ -1109,6 +1109,10 @@ struct stream_fifo *stream_fifo_new(void)  /* Add new stream to fifo. */  void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)  { +#if defined DEV_BUILD +	size_t max, curmax; +#endif +  	if (fifo->tail)  		fifo->tail->next = s;  	else @@ -1116,8 +1120,15 @@ void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)  	fifo->tail = s;  	fifo->tail->next = NULL; - +#if !defined DEV_BUILD  	atomic_fetch_add_explicit(&fifo->count, 1, memory_order_release); +#else +	max = atomic_fetch_add_explicit(&fifo->count, 1, memory_order_release); +	curmax = atomic_load_explicit(&fifo->max_count, memory_order_relaxed); +	if (max > curmax) +		atomic_store_explicit(&fifo->max_count, max, +				      memory_order_relaxed); +#endif  }  void stream_fifo_push_safe(struct stream_fifo *fifo, struct stream *s) diff --git a/lib/stream.h b/lib/stream.h index e5d325e43e..11af85c663 100644 --- a/lib/stream.h +++ b/lib/stream.h @@ -115,6 +115,9 @@ struct stream_fifo {  	/* number of streams in this fifo */  	_Atomic size_t count; +#if defined DEV_BUILD +	_Atomic size_t max_count; +#endif  	struct stream *head;  	struct stream *tail;  | 
