Hi,

On 04/14/2016 05:33 PM, Wiles, Keith wrote:
>>
>> static void
>> -txq_mp2mr_mbuf_check(void *arg, void *start, void *end,
>> -                 uint32_t index __rte_unused)
>> +txq_mp2mr_mbuf_check(struct rte_mempool *mp, void *arg, void *obj,
>> +    __rte_unused uint32_t index)
> 
> I have seen this use of __rte_unused or attributes attached to variables and 
> structures in couple different ways.
> 
> I have seen the placement of the attribute after and before the variable I 
> prefer the attribute to be after, but could adapt I hope.
> Do we have a rule about where the attribute is put in this case and others. I 
> have seen the attributes for structures are always at the end of the 
> structure, which is some cases it may not compile in other places.
> 
> I would like to suggest we place the attributes at the end of structure e.g. 
> __rte_cached_aligned and I would like to see the __rte_unused after the 
> variable as a style in the code.

I agree the __rte_unused shouldn't have moved in this patch.

About the default place of attributes, I've seen an exemple where
putting it at the end didn't what I expected:

        struct {
                int foo;
        } __rte_cache_aligned;

The expected behavior is to define a structure which is cache aligned.
But if "rte_memory.h" is not included, it will define a structure which
is not cache aligned, and a global variable called __rte_cache_aligned,
without any compiler warning.

The gcc doc gives some hints about where to place the attributes:
https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html

Given its length, I'm not sure the dpdk coding rules should contain
anything more than "refer to gcc documentation" ;)

Regards,
Olivier

Reply via email to