This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] misc: Use allocate_once in getmntent
* Adhemerval Zanella:
> On 22/08/2019 06:06, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> On 21/08/2019 11:40, Florian Weimer wrote:
>>>> Both the buffer and struct mntent are now allocated on the heap.
>>>> This results in a slight reduction of RSS usage.
>>>>
>>>> 2019-08-21 Florian Weimer <fweimer@redhat.com>
>>>>
>>>> * misc/mntent.c (struct mntent_buffer): Define.
>>>> (mntent_buffer): Adjust type to void *.
>>>> (allocate): Adjust for allocate_once.
>>>> (deallocate): New function.
>>>> (getmntent): Call allocate_once.
>>>>
>>>> diff --git a/misc/mntent.c b/misc/mntent.c
>>>> index 980ea40967..8fae6064c6 100644
>>>> --- a/misc/mntent.c
>>>> +++ b/misc/mntent.c
>>>> @@ -18,36 +18,41 @@
>>>>
>>>> #include <mntent.h>
>>>> #include <stdlib.h>
>>>> -#include <libc-lock.h>
>>>> +#include <allocate_once.h>
>>>> +
>>>> +struct mntent_buffer
>>>> +{
>>>> + struct mntent m;
>>>> + char buffer[4096];
>>>> +};
>>>
>>> The struct mntent is just 24 bytes for 32 bits or 40 bytes for 64 bits,
>>> I would focus on optimizing the required buffer instead.
>>
>> There are four byte for the __libc_once guard.
>>
>> The main point for doing this is that this storage is always wasted,
>> even if the interface is never called. The change seems simple enough
>> to do now, even if we replace it with something better afterwards (like
>> storing the buffer in the FILE *, or otherwise associating it with it,
>> or making it thread-local).
>>
>
> Right, although a further optimization to reduce buffer would probably
> require two allocations (on for the mntent_buffer and another for the
> buffer itself). But I think it should be ok.
Sorry, is this a review of the original patch? 8-)
Thanks,
Florian