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:

committed by
Eric Engestrom

parent
a56c3e3a47
commit
b3028a9fb8
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user