From ab7c2b012d0132c63d700e036de801a1b7dc3340 Mon Sep 17 00:00:00 2001 From: Jakub Grajciar Date: Wed, 28 Mar 2018 10:21:05 +0200 Subject: libmemif: add private header size field Change-Id: I09567c8ee9c92e91918840f80942a005069d9842 Signed-off-by: Jakub Grajciar --- extras/libmemif/src/libmemif.h | 1 + extras/libmemif/src/main.c | 6 ++++-- extras/libmemif/src/memif.h | 1 + extras/libmemif/src/socket.c | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) (limited to 'extras/libmemif') diff --git a/extras/libmemif/src/libmemif.h b/extras/libmemif/src/libmemif.h index 14c450338ce..e1f96f90c80 100644 --- a/extras/libmemif/src/libmemif.h +++ b/extras/libmemif/src/libmemif.h @@ -74,6 +74,7 @@ typedef enum 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; /** diff --git a/extras/libmemif/src/main.c b/extras/libmemif/src/main.c index f83f71064e6..42bced67dae 100644 --- a/extras/libmemif/src/main.c +++ b/extras/libmemif/src/main.c @@ -54,7 +54,7 @@ /* private structs and functions */ #include -#define ERRLIST_LEN 38 +#define ERRLIST_LEN 39 #define MAX_ERRBUF_LEN 256 #if __x86_x64__ @@ -144,7 +144,9 @@ const char *memif_errlist[ERRLIST_LEN] = { /* MEMIF_ERR_SUCCESS */ /* 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" diff --git a/extras/libmemif/src/memif.h b/extras/libmemif/src/memif.h index 38b54029e46..3fbce91d68f 100644 --- a/extras/libmemif/src/memif.h +++ b/extras/libmemif/src/memif.h @@ -103,6 +103,7 @@ typedef struct __attribute__ ((packed)) 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)) diff --git a/extras/libmemif/src/socket.c b/extras/libmemif/src/socket.c index 8f18d892139..a471e0ba943 100644 --- a/extras/libmemif/src/socket.c +++ b/extras/libmemif/src/socket.c @@ -227,6 +227,7 @@ memif_msg_enq_add_ring (memif_connection_t * c, uint8_t index, uint8_t dir) 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) @@ -516,6 +517,9 @@ memif_msg_receive_add_ring (memif_connection_t * c, memif_msg_t * msg, int fd) 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) -- cgit 1.2.3-korg