perf: gmock marsio

This commit is contained in:
luwenpeng
2023-10-23 19:25:30 +08:00
parent 5f4ec8b4a9
commit 18561bc4fe
4 changed files with 10 additions and 117 deletions

View File

@@ -2,8 +2,8 @@
# gmock_marsio
###############################################################################
add_library(gmock_marsio marsio.cpp)
target_include_directories(gmock_marsio PUBLIC ${CMAKE_CURRENT_LIST_DIR})
add_library(gmock_marsio gmock_marsio.cpp)
target_include_directories(gmock_marsio PUBLIC /opt/mrzcpd/include)
###############################################################################
# temp_platform

View File

@@ -2,7 +2,6 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "marsio.h"
struct mr_instance

View File

@@ -18,6 +18,14 @@ extern "C"
#include "health_check.h"
#include "global_metrics.h"
// new add, only for gtest
extern void marsio_set_recv_mbuff(struct mr_instance *instance, marsio_buff_t *mbuff);
extern void marsio_set_send_mbuff(struct mr_instance *instance, marsio_buff_t *mbuff);
extern marsio_buff_t *marsio_get_recv_mbuff(struct mr_instance *instance);
extern marsio_buff_t *marsio_get_send_mbuff(struct mr_instance *instance);
extern int marsio_mbuff_cmp(marsio_buff_t *mbuff1, marsio_buff_t *mbuff2);
extern marsio_buff_t *marsio_mbuff_dup(marsio_buff_t *m);
#define set_metadata(meta, id, offset, is_ctrl, is_decrypt) \
{ \
memset(&meta, 0, sizeof(meta)); \

View File

@@ -1,114 +0,0 @@
#ifndef _MARSIO_H
#define _MARSIO_H
#ifdef __cpluscplus
extern "C"
{
#endif
#include <stdint.h>
#ifndef MARSIO_SOCKET_ID_ANY
#define MARSIO_SOCKET_ID_ANY -1
#endif
#ifndef MARSIO_LCORE_ID_ANY
#define MARSIO_LCORE_ID_ANY -1
#endif
#define MR_SID_LIST_MAXLEN 8
typedef uint16_t sid_t;
typedef uint32_t queue_id_t;
typedef void marsio_buff_t;
typedef enum
{
MARSIO_OPT_THREAD_NUM,
MARSIO_OPT_THREAD_MASK,
MARSIO_OPT_THREAD_AFFINITY_MODE,
MARSIO_OPT_EXIT_WHEN_ERR,
MARSIO_OPT_THREAD_MASK_IN_CPUSET,
} marsio_opt_type_t;
enum mr_buff_metadata_type
{
MR_BUFF_REHASH_INDEX = 0,
MR_BUFF_METADATA_VLAN_TCI = 1,
MR_BUFF_ROUTE_CTX = 2,
MR_BUFF_SESSION_ID = 3,
MR_BUFF_DIR = 4,
MR_BUFF_PAYLOAD_OFFSET = 5,
MR_BUFF_USER_0 = 254,
};
typedef enum
{
/* 发送后不释放数据包,由应用自行释放数据包 */
MARSIO_SEND_OPT_NO_FREE = 1 << 0,
/* 发送时计算发包哈希值,用于分流 */
MARSIO_SEND_OPT_REHASH = 1 << 1,
/* 快速报文路径 */
MARSIO_SEND_OPT_FAST = 1 << 2,
/* 报文追踪标记 */
MARSIO_SEND_OPT_TRACE = 1 << 3,
/* 控制报文标记 */
MARSIO_SEND_OPT_CTRL = 1 << 4
} marsio_opt_send_t;
struct mr_instance *marsio_create();
int marsio_destory(struct mr_instance *instance);
struct mr_vdev *marsio_open_device(struct mr_instance *instance, const char *devsym, unsigned int nr_rxstream, unsigned int nr_txstream);
void marsio_close_device(struct mr_vdev *vdev);
void marsio_get_device_ether_addr(struct mr_vdev *vdev, void *str_ether_addr, uint8_t size);
struct mr_sendpath *marsio_sendpath_create_by_vdev(struct mr_vdev *dest_device);
void marsio_sendpath_destory(struct mr_sendpath *sendpath);
int marsio_init(struct mr_instance *instance, const char *appsym);
int marsio_option_set(struct mr_instance *instance, marsio_opt_type_t opt_type, void *opt, size_t sz_opt);
int marsio_thread_init(struct mr_instance *instance);
int marsio_poll_wait(struct mr_instance *instance, struct mr_vdev *vdevs[], unsigned int nr_vdevs, unsigned int tid, int timeout);
int marsio_buff_set_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type, void *data, unsigned int sz_data);
int marsio_buff_get_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type, void *data, unsigned int sz_data);
int marsio_buff_set_sid_list(marsio_buff_t *m, sid_t *slist, uint8_t sz_slist);
int marsio_buff_get_sid_list(marsio_buff_t *m, sid_t *out_slist, uint8_t sz_out_slist);
int marsio_buff_malloc_global(struct mr_instance *instance, marsio_buff_t *marsio_buff[], unsigned int nr_mbufs, int socket_id, int thread_id);
void marsio_buff_free(struct mr_instance *instance, marsio_buff_t *marsio_buff[], unsigned int nr_mbufs, int socket_id, int thread_id);
char *marsio_buff_mtod(marsio_buff_t *m);
uint32_t marsio_buff_datalen(marsio_buff_t *m);
char *marsio_buff_adj(marsio_buff_t *m, uint16_t len);
char *marsio_buff_append(marsio_buff_t *m, uint16_t len);
char *marsio_buff_prepend(marsio_buff_t *m, uint16_t len);
void marsio_buff_ctrlzone_reset(marsio_buff_t *m);
int marsio_buff_is_ctrlbuf(marsio_buff_t *m);
void marsio_buff_set_ctrlbuf(marsio_buff_t *m);
int marsio_recv_burst(struct mr_vdev *vdev, queue_id_t qid, marsio_buff_t *mbufs[], int nr_mbufs);
int marsio_send_burst(struct mr_sendpath *sendpath, queue_id_t qid, marsio_buff_t *mbufs[], int nr_mbufs);
int marsio_send_burst_with_options(struct mr_sendpath * sendpath, queue_id_t sid, marsio_buff_t * mbufs[], int nr_mbufs, uint16_t options);
// new add, only for gtest
void marsio_set_recv_mbuff(struct mr_instance *instance, marsio_buff_t *mbuff);
void marsio_set_send_mbuff(struct mr_instance *instance, marsio_buff_t *mbuff);
marsio_buff_t *marsio_get_recv_mbuff(struct mr_instance *instance);
marsio_buff_t *marsio_get_send_mbuff(struct mr_instance *instance);
int marsio_mbuff_cmp(marsio_buff_t *mbuff1, marsio_buff_t *mbuff2);
marsio_buff_t *marsio_mbuff_dup(marsio_buff_t *m);
#ifdef __cpluscplus
}
#endif
#endif