MEMIF_ERR_UNKNOWN_MSG, /*!< unknown message type */
MEMIF_ERR_POLL_CANCEL, /*!< memif_poll_event() was cancelled */
MEMIF_ERR_MAX_RING, /*!< too large ring size */
+ MEMIF_ERR_PRIVHDR, /*!< private hdrs not supported */
} memif_err_t;
/**
/* private structs and functions */
#include <memif_private.h>
-#define ERRLIST_LEN 38
+#define ERRLIST_LEN 39
#define MAX_ERRBUF_LEN 256
#if __x86_x64__
/* MEMIF_ERR_POLL_CANCEL */
"Memif event polling was canceled.",
/* MEMIF_ERR_MAX_RING */
- "Maximum log2 ring size is 15"
+ "Maximum log2 ring size is 15.",
+ /* MEMIF_ERR_PRIVHDR */
+ "Private headers not supported."
};
#define MEMIF_ERR_UNDEFINED "undefined error"
memif_region_index_t region;
memif_region_offset_t offset;
memif_log2_ring_size_t log2_ring_size;
+ uint16_t private_hdr_size; /* used for private metadata */
} memif_msg_add_ring_t;
typedef struct __attribute__ ((packed))
ar->region = mq->region;
ar->log2_ring_size = mq->log2_ring_size;
ar->flags = (dir == MEMIF_RING_S2M) ? MEMIF_MSG_ADD_RING_FLAG_S2M : 0;
+ ar->private_hdr_size = 0;
e->next = NULL;
if (c->msg_queue == NULL)
if (fd < 0)
return MEMIF_ERR_NO_INTFD;
+ if (ar->private_hdr_size != 0)
+ return MEMIF_ERR_PRIVHDR;
+
if (ar->flags & MEMIF_MSG_ADD_RING_FLAG_S2M)
{
if (ar->index > MEMIF_MAX_S2M_RING)