summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortongzongzhen <[email protected]>2024-07-03 11:30:16 +0800
committertongzongzhen <[email protected]>2024-07-16 09:29:01 +0800
commitbb2da54c139df68e61fdae9371e99b9c3b06cae7 (patch)
tree3d42dc920fe85e812a7d0443a8f38075e307ac94
parentc8847c22577e09af73997d97e73790d920ee7a1d (diff)
Add removed inline. Do not add TARGET_CLONES if not necessary.
-rw-r--r--CMakeLists.txt4
-rw-r--r--infra/include/common.h1
-rw-r--r--infra/src/vnode_mirror.c36
3 files changed, 18 insertions, 23 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b5ecbaf..7587b7c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,8 +48,8 @@ set(CMAKE_CXX_FLAGS "-std=gnu++11 -m64 -march=${COREI7} -fPIC -Wall -Wno-format-
#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g")
if(ENABLE_WARNING_AS_ERROR)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Winline -Werror -Wno-error=inline")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Winline -Werror -Wno-error=inline")
endif()
if(ENABLE_SANITIZE_ADDRESS)
diff --git a/infra/include/common.h b/infra/include/common.h
index c6c842b..695f656 100644
--- a/infra/include/common.h
+++ b/infra/include/common.h
@@ -104,6 +104,7 @@ typedef uint32_t hash_t;
#endif
// clang-format off
+// #define TARGET_CLONES
#define TARGET_CLONES __attribute__((flatten,target_clones("default,arch=corei7,arch=znver1,arch=znver2,arch=znver3,arch=znver4,arch=icelake-server")))
// clang-format on
diff --git a/infra/src/vnode_mirror.c b/infra/src/vnode_mirror.c
index 7814bd3..11f251d 100644
--- a/infra/src/vnode_mirror.c
+++ b/infra/src/vnode_mirror.c
@@ -7,9 +7,8 @@
#include "dp_trace.h"
#include "vnode_common.h"
-TARGET_CLONES
-static unsigned int dist_tunnel_rt_objects_retrieve(struct tunnel_desc * desc, struct rte_mbuf * rt_objs[],
- unsigned int nr_max_rt_objs)
+static inline unsigned int dist_tunnel_rt_objects_retrieve(struct tunnel_desc * desc, struct rte_mbuf * rt_objs[],
+ unsigned int nr_max_rt_objs)
{
assert(desc->sz_rt_buffer_used <= desc->sz_rt_buffer);
unsigned int nr_rt_objs = desc->sz_rt_buffer_used;
@@ -22,8 +21,8 @@ static unsigned int dist_tunnel_rt_objects_retrieve(struct tunnel_desc * desc, s
return nr_rt_objs;
}
-TARGET_CLONES
-static bool dist_tunnel_acquire_credits(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc, int32_t credits)
+static inline bool dist_tunnel_acquire_credits(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc,
+ int32_t credits)
{
int32_t inflight_credits = tunnel_desc->inflight_credits;
int32_t missing_credits = credits - inflight_credits;
@@ -69,8 +68,8 @@ static bool dist_tunnel_acquire_credits(struct vnode * vnode_desc, struct tunnel
return true;
}
-TARGET_CLONES
-static void dist_tunnel_return_credits(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc, int32_t credits)
+static inline void dist_tunnel_return_credits(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc,
+ int32_t credits)
{
tunnel_desc->inflight_credits += credits;
@@ -85,9 +84,8 @@ static void dist_tunnel_return_credits(struct vnode * vnode_desc, struct tunnel_
}
}
-TARGET_CLONES
-static void dist_tunnel_flush(struct vnode_prod * prod, struct vnode_cons * cons, unsigned int prodq,
- unsigned int consq, struct tunnel_desc * desc)
+static inline void dist_tunnel_flush(struct vnode_prod * prod, struct vnode_cons * cons, unsigned int prodq,
+ unsigned int consq, struct tunnel_desc * desc)
{
/* nothing to send */
@@ -178,9 +176,8 @@ static void dist_tunnel_flush(struct vnode_prod * prod, struct vnode_cons * cons
desc->sz_en_buffer_used = 0;
}
-TARGET_CLONES
-static void dist_tunnel_enqueue(struct vnode_prod * prod, struct vnode_cons * cons, unsigned int prodq,
- unsigned int consq, struct tunnel_desc * desc, struct rte_mbuf * obj)
+static inline void dist_tunnel_enqueue(struct vnode_prod * prod, struct vnode_cons * cons, unsigned int prodq,
+ unsigned int consq, struct tunnel_desc * desc, struct rte_mbuf * obj)
{
#if VNODE_CHECK_THREAD_SAFE
assert(rte_spinlock_trylock(&desc->lock_thread_safe_check));
@@ -218,9 +215,8 @@ out:
#endif
}
-TARGET_CLONES
-static int dist_tunnel_dequeue(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc, void * obj,
- unsigned int nr_max_obj)
+static inline int dist_tunnel_dequeue(struct vnode * vnode_desc, struct tunnel_desc * tunnel_desc, void * obj,
+ unsigned int nr_max_obj)
{
unsigned int nr_deq = rte_ring_sc_dequeue_burst(tunnel_desc->tunnel_object, obj, nr_max_obj, NULL);
dist_tunnel_return_credits(vnode_desc, tunnel_desc, (int32_t)nr_deq);
@@ -231,8 +227,7 @@ static int dist_tunnel_dequeue(struct vnode * vnode_desc, struct tunnel_desc * t
// only use by prod.
// TODO: rewrite in SSE/SSE2/AVX/AVX2 intrinsics
-TARGET_CLONES
-static void dist_tunnel_block_flush(struct tunnel_block * block, int prodq)
+static inline void dist_tunnel_block_flush(struct tunnel_block * block, int prodq)
{
for (unsigned int consq = 0; consq < block->nr_consq; consq++)
{
@@ -241,9 +236,8 @@ static void dist_tunnel_block_flush(struct tunnel_block * block, int prodq)
}
}
-TARGET_CLONES
-static void dist_tunnel_block_enqueue_with_hash(struct tunnel_block * block, unsigned int prodq,
- struct rte_mbuf * obj[], uint32_t hash[], unsigned int nr_obj)
+static inline void dist_tunnel_block_enqueue_with_hash(struct tunnel_block * block, unsigned int prodq,
+ struct rte_mbuf * obj[], uint32_t hash[], unsigned int nr_obj)
{
assert(nr_obj <= MR_LIBVNODE_MAX_SZ_BURST);
for (unsigned int i = 0; i < nr_obj; i++)