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:
parent
e8c89a9bcb
commit
27b8887946
|
@ -40,6 +40,14 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#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
|
#ifndef SYNC_IOC_MERGE
|
||||||
/* duplicated from linux/sync_file.h to avoid build-time dependency
|
/* duplicated from linux/sync_file.h to avoid build-time dependency
|
||||||
* on new (v4.7) kernel headers. Once distro's are mostly using
|
* 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;
|
return data.fence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* !ANDROID */
|
||||||
|
|
||||||
/* accumulate fd2 into fd1. If *fd1 is not a valid fd then dup fd2,
|
/* 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
|
* otherwise sync_merge() and close the old *fd1. This can be used
|
||||||
* to implement the pattern:
|
* to implement the pattern:
|
||||||
|
|
Loading…
Reference in New Issue