On Wed, 2020-07-29 at 13:43 +0200, Martin Kletzander wrote: > +++ b/src/util/virresctrl.c > @@ -456,6 +456,8 @@ VIR_ONCE_GLOBAL_INIT(virResctrl); > static int > virResctrlLockWrite(void) > { > +#ifndef WIN32 > + > int fd = open(SYSFS_RESCTRL_PATH, O_RDONLY | O_CLOEXEC); > > if (fd < 0) { > @@ -463,13 +465,20 @@ virResctrlLockWrite(void) > return -1; > } > > - if (virFileFlock(fd, true, false) < 0) { > + if (flock(fd, LOCK_EX) < 0) { > virReportSystemError(errno, "%s", _("Cannot lock resctrl")); > VIR_FORCE_CLOSE(fd); > return -1; > } > > return fd; > + > +#else /* WIN32 */ > + > + virReportSystemError(ENOSYS, "%s", _("Cannot lock resctrl")); > + return -1; > + > +#endif > } > > > @@ -484,10 +493,14 @@ virResctrlUnlock(int fd) > if (VIR_CLOSE(fd) < 0) { > virReportSystemError(errno, "%s", _("Cannot close resctrl")); > > +#ifndef WIN32 > + > /* Trying to save the already broken */ > - if (virFileFlock(fd, false, false) < 0) > + if (flock(fd, LOCK_UN) < 0) > virReportSystemError(errno, "%s", _("Cannot unlock resctrl")); > > +#endif > + > return -1; > } So in the end you decided to go for the nuclear option :D I'm okay with the approach, but I would prefer if you stubbed out the functions completely, eg. #ifndef WIN32 static int virResctrlLockWrite(void) { /* do stuff */ } static int virResctrlUnlock(int fd) { /* do stuff */ } #else static int virResctrlLockWrite(void) { virReportSystemError(ENOSYS, "%s", _("resctrl locking is not supported " "on this platform")); return -1; } static int virResctrlUnlock(int fd) { virReportSystemError(ENOSYS, "%s", _("resctrl locking is not supported " "on this platform")); return -1; } #endif Also, since AFAIU resctrl is Linux-only, perhaps a better preprocessor guard would be #ifdef __linux__ so that we (correctly) stub the functions out on FreeBSD and macOS too. -- Andrea Bolognani / Red Hat / Virtualization