[rrd-developers] rrd_open.c: mremap not portable, /trunk build broken

kevin brintnall kbrint at rufus.net
Tue Oct 14 23:53:52 CEST 2008

r1601 breaks the build in /trunk on FreeBSD, Solaris, and probably others:

  rrd_open.c: In function 'rrd_write':
  rrd_open.c:571: warning: implicit declaration of function 'mremap'
  rrd_open.c:571: warning: nested extern declaration of 'mremap'
  rrd_open.c:571: error: 'MREMAP_MAYMOVE' undeclared (first use in this function)
  rrd_open.c:571: error: (Each undeclared identifier is reported only once
  rrd_open.c:571: error: for each function it appears in.)
  rrd_open.c:571: warning: assignment makes pointer from integer without a cast

The manual page on Linux states:

  mremap() uses the Linux page table scheme. mremap() changes the mapping
  between virtual addresses and memory pages. This can be used to
  implement a very efficient realloc().
  This call is Linux-specific, and should not be used in programs intended
  to be portable. 4.2BSD had a (never actually implemented) mremap(2) call
  with completely different semantics.

Tobi, can you revert this change?

Maybe Daniel can re-implement it in terms of realloc?

 kevin brintnall =~ /kbrint at rufus.net/

More information about the rrd-developers mailing list