Message ID | 20161207232108.1cc96e65@free-electrons.com |
---|---|
State | Accepted |
Headers | show |
Hi Thomas, Thomas Petazzoni wrote, > Hello, > > Since commit 52b50c15fa3b319bb162f0d47fbeb6582842c020, madvise() advice > macros are no longer available on noMMU architectures. However, the > madvise() function call is still available. Therefore the following > piece of code from madplay causes a build failure: > > # if defined(HAVE_MADVISE) > madvise(fdm, length, MADV_SEQUENTIAL); > # endif > > Indeed, because madvise() exists in uClibc, HAVE_MADVISE is defined. > But MADV_SEQUENTIAL is no longer defined, causing a build failure. > > Shouldn't madvise() be handled like posix_madvise(), i.e made not > available on noMMU systems? > > Also, I see in <sys/mman.h> that the posix_madvise() prototype is still > visible on noMMU platforms. Is still really correct? > > See the two attached patches (completely untested, not even build > tested) for what I mean. > > Thanks! Tested, applied and pushed, thx Waldemar
From cbd4b00001bbe31c76fd0b05aa33de7898338482 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Date: Wed, 7 Dec 2016 23:20:18 +0100 Subject: [PATCH 2/2] include/sys/mman.h: remove madvise/posix_madvise prototypes on noMMU Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> --- include/sys/mman.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/sys/mman.h b/include/sys/mman.h index 71d553a..fc8fce5 100644 --- a/include/sys/mman.h +++ b/include/sys/mman.h @@ -99,6 +99,7 @@ static __inline__ int msync (void *__addr, size_t __len, int __flags) { return 0 #endif +#ifdef __ARCH_USE_MMU__ #if defined __USE_BSD && (defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__) /* Advise the system about particular usage patterns the program follows for the region starting at ADDR and extending LEN bytes. */ @@ -108,6 +109,8 @@ extern int madvise (void *__addr, size_t __len, int __advice) __THROW; /* This is the POSIX name for this function. */ extern int posix_madvise (void *__addr, size_t __len, int __advice) __THROW; #endif +#endif /* __ARCH_USE_MMU__ */ + #if defined __UCLIBC_HAS_REALTIME__ # ifdef __ARCH_USE_MMU__ -- 2.7.4