EE445M RTOS
Taken at the University of Texas Spring 2015
Buffer management macros

Macros

#define BUFFER_MAX_LENGTH   32
 
#define BUFFER_DEFAULT_DECREMENT_AMOUNT   1
 
#define buffer_init(buf)   buffer_len(buf) = 0;
 
#define buffer_add(buf, elt)
 
#define buffer_dec(buf)   buffer_dec_(buf, BUFFER_DEFAULT_DECREMENT_AMOUNT)
 
#define buffer_dec_(buf, amount)
 
#define buffer_last(buf)   buf[buffer_len(buf)-1]
 
#define buffer_full(buf)   (buf##_SIZE == BUFFER_MAX_LENGTH-1)
 
#define buffer_empty(buf)   (buf##_SIZE == 0)
 
#define buffer_clear(buf)   buffer_len(buf) = 0
 
#define buffer_null_terminate(buf)   buf[buffer_len(buf)] = 0
 
#define buffer_len(buf)   buf##_SIZE
 

Detailed Description

Macro Definition Documentation

#define buffer_add (   buf,
  elt 
)
Value:
do { \
if(buffer_len(buf) + 1 <= BUFFER_MAX_LENGTH) { \
buf[buffer_len(buf)] = elt; \
++buffer_len(buf); \
} \
} while (false)
#define buffer_len(buf)
Definition: buffer.h:74
#define BUFFER_MAX_LENGTH
Definition: buffer.h:18

Add to buffer a single element.

Bug:
No warning on overflow failure

Definition at line 28 of file buffer.h.

Referenced by UART0_Handler().

#define buffer_clear (   buf)    buffer_len(buf) = 0

Definition at line 66 of file buffer.h.

#define buffer_dec (   buf)    buffer_dec_(buf, BUFFER_DEFAULT_DECREMENT_AMOUNT)

Decrement the number of characters in buffer by the standard amount.

Definition at line 39 of file buffer.h.

Referenced by hw_notify_uart(), and UART0_Handler().

#define buffer_dec_ (   buf,
  amount 
)
Value:
do { \
if(buffer_len(buf) - amount >= 0) { \
buffer_len(buf) = buffer_len(buf) - amount; \
} \
} while (false)
#define buffer_len(buf)
Definition: buffer.h:74

Decrement the number of characters in buffer by amount.

Note
This macro needs to be called on its own line.
Bug:

No warning on underflow failure

Non-atomic

Definition at line 47 of file buffer.h.

#define BUFFER_DEFAULT_DECREMENT_AMOUNT   1

Definition at line 19 of file buffer.h.

#define buffer_empty (   buf)    (buf##_SIZE == 0)

True if a buffer is empty

Definition at line 63 of file buffer.h.

Referenced by hw_notify_uart(), and UART0_Handler().

#define buffer_full (   buf)    (buf##_SIZE == BUFFER_MAX_LENGTH-1)

True if a buffer is full

Definition at line 59 of file buffer.h.

Referenced by UART0_Handler().

#define buffer_init (   buf)    buffer_len(buf) = 0;

Initialize buffer and its metadata

Definition at line 22 of file buffer.h.

#define buffer_last (   buf)    buf[buffer_len(buf)-1]

Access the last element in a buffer

Definition at line 55 of file buffer.h.

Referenced by hw_notify_uart().

#define buffer_len (   buf)    buf##_SIZE

Evaluate to the length of a buffer.

Definition at line 74 of file buffer.h.

#define BUFFER_MAX_LENGTH   32

A buffer consists of storage and metadata. Specifically,

  • the storage of a buffer is an array of any type; and
  • the metadata of a buffer is
    • uint32_t of the same name suffixed with '_SIZE'
    • global maximum buffer length, set in this file

Definition at line 18 of file buffer.h.

#define buffer_null_terminate (   buf)    buf[buffer_len(buf)] = 0

Terminate a buffer with a null character.

Definition at line 70 of file buffer.h.