From 27b888794624225343287e57f5fcea63f94850b3 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 22 Sep 2020 13:02:37 -0700 Subject: [PATCH] android: Add pre-4.7 Android kernel compatibility to our libsync header. The downstream Android kernels had a different API than was merged upstream, and libsync on Android abstracts over that for us. Use their sync_merge() and sync_wait(), at the cost of linking against libsync (which Android.mk and meson both do). Reviewed-by: Kristian H. Kristensen Part-of: --- src/util/libsync.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/util/libsync.h b/src/util/libsync.h index f1a2f96d36b..2e9f499200b 100644 --- a/src/util/libsync.h +++ b/src/util/libsync.h @@ -40,6 +40,14 @@ extern "C" { #endif +#ifdef ANDROID +/* On Android, rely on the system's libsync instead of rolling our own + * sync_wait() and sync_merge(). This gives us compatibility with pre-4.7 + * Android kernels. + */ +#include +#else + #ifndef SYNC_IOC_MERGE /* duplicated from linux/sync_file.h to avoid build-time dependency * on new (v4.7) kernel headers. Once distro's are mostly using @@ -101,6 +109,8 @@ static inline int sync_merge(const char *name, int fd1, int fd2) return data.fence; } +#endif /* !ANDROID */ + /* accumulate fd2 into fd1. If *fd1 is not a valid fd then dup fd2, * otherwise sync_merge() and close the old *fd1. This can be used * to implement the pattern: