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 <hoegsberg@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6821>
This commit is contained in:
Eric Anholt 2020-09-22 13:02:37 -07:00 committed by Marge Bot
parent e8c89a9bcb
commit 27b8887946
1 changed files with 10 additions and 0 deletions

View File

@ -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 <android/sync.h>
#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: