Module: Mesa Branch: staging/19.2 Commit: 45aa00da9f61b3c4807ad2f1708efac1916aa50b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=45aa00da9f61b3c4807ad2f1708efac1916aa50b
Author: Alan Coopersmith <[email protected]> Date: Fri Apr 21 21:57:50 2017 -0700 util: Workaround lack of flock on Solaris v2: Replace autoconf check for flock() with meson check Signed-off-by: Alan Coopersmith <[email protected]> Acked-by: Eric Engestrom <[email protected]> (cherry picked from commit b3028a9fb8110fd37f60e9d66dad3cde6e7b062b) Minor conflicts resolved by Dylan Baker --- meson.build | 2 +- src/util/disk_cache.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 0361e0ca1ec..bcb8fcf8348 100644 --- a/meson.build +++ b/meson.build @@ -1034,7 +1034,7 @@ foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h', 'endian.h', 'dlfcn.h' endif endforeach -foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_create', 'random_r'] +foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get', 'memfd_create', 'random_r', 'flock'] if cc.has_function(f) pre_args += '-DHAVE_@0@'.format(f.to_upper()) endif diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c index b14a723c5cd..73a6a7c8d61 100644 --- a/src/util/disk_cache.c +++ b/src/util/disk_cache.c @@ -903,7 +903,17 @@ cache_put(void *job, int thread_index) * open with the flock held. So just let that file be responsible * for writing the file. */ +#ifdef HAVE_FLOCK err = flock(fd, LOCK_EX | LOCK_NB); +#else + struct flock lock = { + .l_start = 0, + .l_len = 0, /* entire file */ + .l_type = F_WRLCK, + .l_whence = SEEK_SET + }; + err = fcntl(fd, F_SETLK, &lock); +#endif if (err == -1) goto done; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
