[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#8976) LMDB > use posix_madvise(3) instead of madvise(3) for SmartOS



Matthieu GUEGAN wrote:
> On Fri, Feb 15, 2019 at 3:56 PM Howard Chu <hyc@symas.com> wrote:
>>
>> mguegan@virtua.ch wrote:
>>> Full_Name: Matthieu Guegan
>>> Version: current
>>> OS: SmartOS
>>> URL:
>>> Submission from: (NULL) (109.190.148.77)
>>>
>>>
>>> Hi,
>>>
>>> In order to compile knot[1] on SmartOS, I have done a series of little patches.
>>> One of them is linked to the LMDB project, which redirects me here.
>>>
>>> The idea is to tell SmartOS (and I think the SunOS family) to make use of
>>> posix_madvise(3), instead of madvise(3) as implementation on this OS[2] is
>>> different than, for example, the Linux[3] one.
>>>
>>> So, I kindly ask you to take a look at the merge request of the knot project[4],
>>> in particular the `src/contrib/lmdb/mdb.c` patch (that's just a ifdef
>>> modification) : would it be possible to apply this patch directly in this
>>> repository ?
>>
>> I see no functional difference between your references [2] and [3].
>> What is the benefit of this patch?
> 
> Well, the Solaris/SunOS's madvise(3) is defined with an old `caddr_t`
> type whereas Linux (and *BSD OSes too) use a more modern approach with
> `void *`.
> On the `knot` project, which embed the lmdb part of openldap,
> compilation failed when using madvise(3) on SmartOS, so I did a
> replacement with posix_madvise(3) which uses the `void *` argument
> too.
> I don't know what's the best way to handle this case, that's why I ask here.

A caddr_t is just a typedef of "char *". It should always be legal to
pass a void * to such a parameter. What is your compile error message?

-- 
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/