aboutsummaryrefslogtreecommitdiffstats
path: root/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-01-19 01:29:33 +0100
committerMauro Sardara <msardara@cisco.com>2019-01-21 12:03:48 +0100
commit9e5f41ed6ebe64a789916794626485460078c420 (patch)
treed2ac3090026ec8929558e88eca533f8787a6ff0b /libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
parentd13d37534d9449dd54277af664310d5f957dc44a (diff)
- Code style fix
- Improved vpp binary api interface - Correction in object pool destructor - Fix error in Memif Connector Change-Id: Id1dd9219fc1ac0b3717ae019ebff17373bebc635 Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'libtransport/src/hicn/transport/core/vpp_binary_api_internal.h')
-rw-r--r--[-rwxr-xr-x]libtransport/src/hicn/transport/core/vpp_binary_api_internal.h33
1 files changed, 23 insertions, 10 deletions
diff --git a/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h b/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
index 22b665e96..a6e2c01a3 100755..100644
--- a/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
+++ b/libtransport/src/hicn/transport/core/vpp_binary_api_internal.h
@@ -27,16 +27,9 @@ extern "C" {
#include <vlibapi/api.h>
#include <vlibmemory/api.h>
-struct vpp_binary_api {
- api_main_t *api_main;
- u32 my_client_index;
- unix_shared_memory_queue_t *vl_input_queue;
- vlib_main_t *vlib_main;
- sem_t *semaphore;
- u32 ping_id;
- int ret_val;
- void *user_param;
-};
+#include <stdint.h>
+
+typedef struct vpp_binary_api vpp_binary_api_t;
struct vpp_plugin_binary_api {
vpp_binary_api_t *vpp_api;
@@ -44,6 +37,26 @@ struct vpp_plugin_binary_api {
u32 my_client_index;
};
+#define POINTER_MAP_SIZE 32
+typedef struct {
+ void *global_pointers_map[POINTER_MAP_SIZE];
+ uint8_t global_pointers_map_index;
+} context_store_t;
+
+#define CONTEXT_SAVE(context_store, pointer, mp) \
+ do { \
+ context_store \
+ .global_pointers_map[context_store.global_pointers_map_index] = \
+ pointer; \
+ mp->context = context_store.global_pointers_map_index++; \
+ context_store.global_pointers_map_index %= POINTER_MAP_SIZE; \
+ } while (0);
+
+#define CONTEXT_GET(context_store, mp, pointer) \
+ do { \
+ pointer = context_store.global_pointers_map[mp->context]; \
+ } while (0);
+
#define M(T, mp) \
do { \
mp = vl_msg_api_alloc_as_if_client(sizeof(*mp)); \