summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/capture/capture_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libmisc/capture/capture_buffer.h')
-rw-r--r--cpukit/libmisc/capture/capture_buffer.h69
1 files changed, 42 insertions, 27 deletions
diff --git a/cpukit/libmisc/capture/capture_buffer.h b/cpukit/libmisc/capture/capture_buffer.h
index 2b90b0abc2..7f21f4709e 100644
--- a/cpukit/libmisc/capture/capture_buffer.h
+++ b/cpukit/libmisc/capture/capture_buffer.h
@@ -12,6 +12,9 @@
COPYRIGHT (c) 2014.
On-Line Applications Research Corporation (OAR).
+ Copyright 2016 Chris Johns <chrisj@rtems.org>.
+ All rights reserved.
+
The license and distribution terms for this file may be
found in the file LICENSE in this distribution.
@@ -20,83 +23,95 @@
------------------------------------------------------------------------
*/
-#ifndef __CAPTUREBUFFER_H_
-#define __CAPTUREBUFFER_H_
+#ifndef __CAPTURE_BUFFER_H_
+#define __CAPTURE_BUFFER_H_
#include <stdlib.h>
-
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
+/**
+ * Capture buffer. There is one per CPU.
+ */
typedef struct {
- uint8_t *buffer;
- size_t size;
- size_t count;
- size_t head;
- size_t tail;
- size_t end;
+ uint8_t* buffer; /**< The per cpu buffer. */
+ size_t size; /**< The size of the buffer in bytes. */
+ size_t count; /**< The number of used bytes in the buffer. */
+ size_t head; /**< First record. */
+ size_t tail; /**< Head == Tail for empty. */
+ size_t end; /**< Buffer current end, it may move in. */
+ size_t max_rec; /**< The largest record in the buffer. */
} rtems_capture_buffer_t;
-static inline void rtems_capture_buffer_flush( rtems_capture_buffer_t* buffer )
+static inline void
+rtems_capture_buffer_flush (rtems_capture_buffer_t* buffer)
{
buffer->end = buffer->size;
buffer->head = buffer->tail = 0;
buffer->count = 0;
+ buffer->max_rec = 0;
}
-static inline void rtems_capture_buffer_create( rtems_capture_buffer_t* buffer, size_t size )
+static inline void
+rtems_capture_buffer_create (rtems_capture_buffer_t* buffer, size_t size)
{
buffer->buffer = malloc(size);
buffer->size = size;
- rtems_capture_buffer_flush( buffer );
+ rtems_capture_buffer_flush (buffer);
}
-static inline void rtems_capture_buffer_destroy( rtems_capture_buffer_t* buffer )
+static inline void
+rtems_capture_buffer_destroy (rtems_capture_buffer_t* buffer)
{
- rtems_capture_buffer_flush( buffer );
- free( buffer->buffer);
+ rtems_capture_buffer_flush (buffer);
+ free (buffer->buffer);
buffer->buffer = NULL;
}
-static inline bool rtems_capture_buffer_is_empty( rtems_capture_buffer_t* buffer )
+static inline bool
+rtems_capture_buffer_is_empty (rtems_capture_buffer_t* buffer)
{
- return( buffer->count == 0 );
+ return buffer->count == 0;
}
-static inline bool rtems_capture_buffer_is_full( rtems_capture_buffer_t* buffer )
+static inline bool
+rtems_capture_buffer_is_full (rtems_capture_buffer_t* buffer)
{
- return (buffer->count == buffer->size);
+ return buffer->count == buffer->size;
}
-static inline bool rtems_capture_buffer_has_wrapped( rtems_capture_buffer_t* buffer )
+static inline bool
+rtems_capture_buffer_has_wrapped (rtems_capture_buffer_t* buffer)
{
- if ( buffer->tail > buffer->head)
+ if (buffer->tail > buffer->head)
return true;
return false;
}
-static inline void *rtems_capture_buffer_peek( rtems_capture_buffer_t* buffer, size_t *size )
+static inline void*
+rtems_capture_buffer_peek (rtems_capture_buffer_t* buffer, size_t* size)
{
- if (rtems_capture_buffer_is_empty(buffer)) {
+ if (rtems_capture_buffer_is_empty (buffer))
+ {
*size = 0;
return NULL;
}
- if ( buffer->tail > buffer->head)
+ if (buffer->tail > buffer->head)
*size = buffer->end - buffer->tail;
else
*size = buffer->head - buffer->tail;
- return &buffer->buffer[ buffer->tail ];
+ return &buffer->buffer[buffer->tail];
}
-void *rtems_capture_buffer_allocate( rtems_capture_buffer_t* buffer, size_t size );
+void* rtems_capture_buffer_allocate (rtems_capture_buffer_t* buffer, size_t size);
-void *rtems_capture_buffer_free( rtems_capture_buffer_t* buffer, size_t size );
+void* rtems_capture_buffer_free (rtems_capture_buffer_t* buffer, size_t size);
#ifdef __cplusplus
}