diff options
| author | tongzongzhen <[email protected]> | 2024-07-03 11:30:16 +0800 |
|---|---|---|
| committer | tongzongzhen <[email protected]> | 2024-07-16 09:29:01 +0800 |
| commit | bb2da54c139df68e61fdae9371e99b9c3b06cae7 (patch) | |
| tree | 3d42dc920fe85e812a7d0443a8f38075e307ac94 | |
| parent | c8847c22577e09af73997d97e73790d920ee7a1d (diff) | |
Add removed inline. Do not add TARGET_CLONES if not necessary.
| -rw-r--r-- | CMakeLists.txt | 4 | ||||
| -rw-r--r-- | infra/include/common.h | 1 | ||||
| -rw-r--r-- | infra/src/vnode_mirror.c | 36 |
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++) |
