|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH 1/6] x86: rename variable 'e820' to address MISRA C:2012 Rule 5.3
On 08.08.2023 09:08, Nicola Vetrini wrote:
> On 07/08/2023 11:10, Jan Beulich wrote:
>> On 07.08.2023 10:59, Nicola Vetrini wrote:
>>> On 07/08/2023 10:09, Jan Beulich wrote:
>>>> On 04.08.2023 17:27, Nicola Vetrini wrote:
>>>>> The variable declared in the header file
>>>>> 'xen/arch/x86/include/asm/e820.h'
>>>>> is shadowed by many function parameters, so it is renamed to avoid
>>>>> these
>>>>> violations.
>>>>>
>>>>> No functional changes.
>>>>>
>>>>> Signed-off-by: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
>>>>> ---
>>>>> This patch is similar to other renames done on previous patches, and
>>>>> the
>>>>> preferred strategy there was to rename the global variable. This one
>>>>> has more occurrences that are spread in various files, but
>>>>> the general pattern is the same.
>>>>
>>>> Still I think it would be better done the other way around, and
>>>> perhaps
>>>> in
>>>> more than a single patch. It looks like "many == 3", i.e.
>>>> - e820_add_range(), which is only ever called with "e820" as its
>>>> argument,
>>>> and hence the parameter could be dropped,
>
> I see another downside with this approach (I should have spotted this
> sooner):
> Since e820_add_range and the other functions expected e820 as a pointer,
> they are
> written like this:
>
> for ( i = 0; i < e820->nr_map; ++i )
> {
> uint64_t rs = e820->map[i].addr;
> uint64_t re = rs + e820->map[i].size;
>
> if ( rs == e && e820->map[i].type == type )
> {
> e820->map[i].addr = s;
> return 1;
> }
> ...
>
> Dropping the parameter would either mean
> 1. Use a local parameter that stores the address of e820, which kind of
> nullifies the purpose of dropping the parameter imho;
This isn't an unusual thing to do; it is only the name being short which
may make it look "unnecessary" here. But especially if the local variable
was made of type struct e820entry * (and updated in the for()) I think
this could be useful overall.
> 2. Rewrite it so that it operates on a "struct e820map", which would
> mean
> substantial churn;
> 3. Make the global a pointer, which is reminiscent of (1)
>
> All in all, I do like the global renaming approach more, because it
> lessens
> the amount of code that needs to change to accomodate a case of
> shadowing.
Well, to go that route you need to come up with a suitable new name (no
prior proposal was really meeting that requirement) and you'd need to
convince at least one of the x86 maintainers.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |