Hi Jianbo, On 06/01/2016 05:29 AM, Jianbo Liu wrote: >> enum rte_mbuf_prefetch_type { >> > PREFETCH0, >> > PREFETCH1, >> > ... >> > }; >> > >> > static inline void >> > rte_mbuf_prefetch_part1(enum rte_mbuf_prefetch_type type, >> > struct rte_mbuf *m) >> > { >> > switch (type) { >> > case PREFETCH0: >> > rte_prefetch0(&m->cacheline0); >> > break; >> > case PREFETCH1: >> > rte_prefetch1(&m->cacheline0); >> > break; >> > ... >> > } >> > > How about adding these to forbid the illegal use of this macro? > enum rte_mbuf_prefetch_type { > ENUM_prefetch0, > ENUM_prefetch1, > ... > }; > > #define RTE_MBUF_PREFETCH_PART1(type, m) \ > if (ENUM_##type == ENUM_prefretch0) \ > rte_prefetch0(&(m)->cacheline0); \ > else if (ENUM_##type == ENUM_prefetch1) \ > rte_prefetch1(&(m)->cacheline0); \ > .... >
As Stephen stated, a static inline is better than a macro, mainly because it is understood by the compiler instead of beeing a dumb code replacement. Any reason why you would prefer a macro in that case? Regards Olivier