Matthieu GUEGAN wrote: > On Fri, Feb 15, 2019 at 3:56 PM Howard Chu <[email protected]> wrote: >> >> [email protected] 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/
