[Devel] [PATCH 10/10] get_num_cpu(): refactored

Kir Kolyshkin kir at openvz.org
Tue May 7 05:00:42 PDT 2013


On 05/07/2013 03:17 AM, Igor M Podlesny wrote:
> On 7 May 2013 16:36, Andrew Vagin <avagin at parallels.com> wrote:
>> On Tue, May 07, 2013 at 02:42:12PM +0800, Igor Podlesny wrote:
> […]
>>> +     FILE *fd = fopen(PROCCPU, "r");
>> Usually if a function can return an error, it does not used in
>> declarations.
>     It's declaration And initialization, BTW. I never saw such a
> prejudice regarding dec. & initialization before. Have you some
> references?

Consider the following scenario

1 We have code like

FILE *fd = fopen(PROCPU, "r");

2 We are adding parsing of another file

FILE *fd2 = fopen(PROCCPU2, "r");

3 Now we are in trouble -- each fopen() can set errno, and we don't have 
a way to analyse it.

>>> -     if ((fd = fopen(PROCCPU, "r")) == NULL) {
>>> +     if (NULL == fd) {
>> Pls, follow the current coding style.
>>          if (fd === NULL)
>     Somebody suffers from too much PHP, too much, doesn't he? )

Very funny indeed, taking into account that Andrey is a kernel developer.

Igor, please don't get personal on a public mailing list. Attack the 
problem, not the person. Andrey is trying to help you.

We don't use "yoda conditions" in vzctl code.

>>>                logger(-1, errno, "Cannot open " PROCCPU);
>>> -             return 1;
>>> -     }
>>> -     while (fgets(str, sizeof(str), fd)) {
>>> -             char const proc_ptrn[] = "processor";
>>> -             if (!strncmp(str, proc_ptrn, sizeof(proc_ptrn) - 1))
>>> -                     ncpu++;
>>> +     } else {
>> Why do we need one more indent here instead of returning 1 in the
>> previous block? I am not sure that this version is more readable...
>     You might be unsure because patch is difficult to compare,
> side-by-side comparison is more convenient or what is even more easier
> to see is complete version:
>
>        https://bitbucket.org/poige/vzctl/src/17401655f7993821b4244b7d3291743f6dd3a75f/src/lib/util.c#cl-539
>
>     — please, take a look.
>
>>> +             char str[128];
>>> +             while (fgets(str, sizeof(str), fd)) {
>>> +                     char const proc_ptrn[] = "processor";
>>> +                     if (!strncmp(str, proc_ptrn, sizeof(proc_ptrn) - 1))
>>> +                             ncpu++;
>>> +             }
>>> +             fclose(fd);
>>>        }
>>> -     fclose(fd);
>>> -     return !ncpu ? 1 : ncpu;
>>> +     return MAX_OF(1, ncpu);
>>>   }
>>>
>>>   int get_lowmem(unsigned long long *mem)
>>> --
>>> 1.7.9.5
>>>
>>> _______________________________________________
>>> Devel mailing list
>>> Devel at openvz.org
>>> https://lists.openvz.org/mailman/listinfo/devel
> _______________________________________________
> Devel mailing list
> Devel at openvz.org
> https://lists.openvz.org/mailman/listinfo/devel




More information about the Devel mailing list