Steve Sistare <steven.sist...@oracle.com> writes: +cc dgilbert, marcandre
> Define qemu_clear_cloexec, analogous to qemu_set_cloexec. > > Signed-off-by: Steve Sistare <steven.sist...@oracle.com> > Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> A v1 patch with two reviews already, from people from another company and they're not in CC. Looks suspicious. =) Here's a fresh one, hopefully it won't spend another 4 years in the drawer: Reviewed-by: Fabiano Rosas <faro...@suse.de> > --- > include/qemu/osdep.h | 9 +++++++++ > util/oslib-posix.c | 9 +++++++++ > util/oslib-win32.c | 4 ++++ > 3 files changed, 22 insertions(+) > > diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h > index c7053cd..b58f312 100644 > --- a/include/qemu/osdep.h > +++ b/include/qemu/osdep.h > @@ -660,6 +660,15 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t > count) > > void qemu_set_cloexec(int fd); > > +/* > + * Clear FD_CLOEXEC for a descriptor. > + * > + * The caller must guarantee that no other fork+exec's occur before the > + * exec that is intended to inherit this descriptor, eg by suspending CPUs > + * and blocking monitor commands. > + */ > +void qemu_clear_cloexec(int fd); > + > /* Return a dynamically allocated directory path that is appropriate for > storing > * local state. > * > diff --git a/util/oslib-posix.c b/util/oslib-posix.c > index e764416..614c3e5 100644 > --- a/util/oslib-posix.c > +++ b/util/oslib-posix.c > @@ -272,6 +272,15 @@ int qemu_socketpair(int domain, int type, int protocol, > int sv[2]) > return ret; > } > > +void qemu_clear_cloexec(int fd) > +{ > + int f; > + f = fcntl(fd, F_GETFD); > + assert(f != -1); > + f = fcntl(fd, F_SETFD, f & ~FD_CLOEXEC); > + assert(f != -1); > +} > + > char * > qemu_get_local_state_dir(void) > { > diff --git a/util/oslib-win32.c b/util/oslib-win32.c > index b623830..c3e969a 100644 > --- a/util/oslib-win32.c > +++ b/util/oslib-win32.c > @@ -222,6 +222,10 @@ void qemu_set_cloexec(int fd) > { > } > > +void qemu_clear_cloexec(int fd) > +{ > +} > + > int qemu_get_thread_id(void) > { > return GetCurrentThreadId();