$NetBSD$

--- src/xfermem.c.orig	2009-12-05 21:26:24.000000000 +0100
+++ src/xfermem.c	2010-02-06 20:14:14.000000000 +0100
@@ -37,6 +37,13 @@
 
 #ifdef HAVE_MMAP
 #  ifdef MAP_ANON
+
+#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104030000)
+	if(madvise((void *)xf, (regsize - sizeof(txfermem)),
+		    MADV_SEQUENTIAL) < 0)
+		fprintf(stderr,"madvise failed, continuing anyway...\n");
+#endif
+
 	if ((*xf = (txfermem *) mmap(0, regsize, PROT_READ | PROT_WRITE,
 			MAP_ANON | MAP_SHARED, -1, 0)) == (txfermem *) -1) {
 		perror ("mmap()");
@@ -92,7 +99,13 @@
 	if(!xf)
 		return;
 #ifdef HAVE_MMAP
-	munmap ((caddr_t) xf, xf->size + xf->metasize + sizeof(txfermem));
+	munmap ((void *) xf, xf->size + xf->metasize + sizeof(txfermem));
+
+#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104030000)
+	if(madvise((void *)xf, (xf->size + xf->metasize), MADV_FREE) < 0)
+		fprintf(stderr,"madvise failed, continuing anyways..\n");
+#endif
+
 #else
 	if (shmdt((void *) xf) == -1) {
 		perror ("shmdt()");
