implement posix_madvise

Bug: 18472477
Change-Id: I8183de6c281acf69ed5f7f88351b056b9827b162
diff --git a/libc/include/machine/posix_limits.h b/libc/include/machine/posix_limits.h
index 939a1de..25887be 100644
--- a/libc/include/machine/posix_limits.h
+++ b/libc/include/machine/posix_limits.h
@@ -32,7 +32,7 @@
 
 /* Any constant values here other than -1 or 200809L are explicitly specified by POSIX.1-2008. */
 /* Keep it sorted. */
-#define _POSIX_ADVISORY_INFO        -1  /* posix_madvise() not implemented */
+#define _POSIX_ADVISORY_INFO        200809L
 #define _POSIX_AIO_LISTIO_MAX       2
 #define _POSIX_AIO_MAX              1
 #define _POSIX_ARG_MAX              4096
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 09bf0d9..1663222 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -43,6 +43,12 @@
 #define MREMAP_MAYMOVE  1
 #define MREMAP_FIXED    2
 
+#define POSIX_MADV_NORMAL     MADV_NORMAL
+#define POSIX_MADV_RANDOM     MADV_RANDOM
+#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
+#define POSIX_MADV_WILLNEED   MADV_WILLNEED
+#define POSIX_MADV_DONTNEED   MADV_DONTNEED
+
 extern void* mmap(void*, size_t, int, int, int, off_t);
 extern void* mmap64(void*, size_t, int, int, int, off64_t);
 extern int munmap(void*, size_t);
@@ -61,6 +67,8 @@
 
 extern int mincore(void*, size_t, unsigned char*);
 
+extern int posix_madvise(void*, size_t, int);
+
 __END_DECLS
 
 #endif /* _SYS_MMAN_H_ */