util: Workaround lack of flock on Solaris

v2: Replace autoconf check for flock() with meson check

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Acked-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Alan Coopersmith
2017-04-21 21:57:50 -07:00
committed by Eric Engestrom
parent a56c3e3a47
commit b3028a9fb8
2 changed files with 11 additions and 1 deletions

View File

@@ -1144,7 +1144,7 @@ foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h', 'endian.h', 'dlfcn.h'
endif
endforeach
foreach f : ['strtof', 'mkostemp', 'timespec_get', 'memfd_create', 'random_r']
foreach f : ['strtof', 'mkostemp', 'timespec_get', 'memfd_create', 'random_r', 'flock']
if cc.has_function(f)
pre_args += '-DHAVE_@0@'.format(f.to_upper())
endif

View File

@@ -907,7 +907,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;