gallium/os: use mmap64 for Android

Simplify the handling of mmap for Android by using mmap64 instead. mmap64
may have not existed for Android when this was written, but it's been
around since 2013.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Rob Herring 2017-05-23 13:54:19 -05:00
parent d5a9365d46
commit 51f9851753
1 changed files with 3 additions and 18 deletions

View File

@ -45,30 +45,15 @@
# error Unsupported OS
#endif
#if defined(PIPE_OS_ANDROID)
# include <errno.h> /* for EINVAL */
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if defined(PIPE_OS_ANDROID) && !defined(__LP64__)
extern void *__mmap2(void *, size_t, int, int, int, size_t);
static inline void *os_mmap(void *addr, size_t length, int prot, int flags,
int fd, loff_t offset)
{
/* offset must be aligned to 4096 (not necessarily the page size) */
if (unlikely(offset & 4095)) {
errno = EINVAL;
return MAP_FAILED;
}
return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
}
/* 32-bit needs mmap64 for 64-bit offsets */
# define os_mmap(addr, length, prot, flags, fd, offset) \
mmap64(addr, length, prot, flags, fd, offset)
# define os_munmap(addr, length) \
munmap(addr, length)