From 3c63b4e94a16db730a8185278479b592f7de8b7f Mon Sep 17 00:00:00 2001 From: Guoyi Tu Date: Tue, 23 Aug 2022 15:50:39 +0800 Subject: oslib-posix: Introduce qemu_socketpair() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qemu_socketpair() will create a pair of connected sockets with FD_CLOEXEC set Signed-off-by: Guoyi Tu Reviewed-by: Christian Schoenebeck Reviewed-by: Marc-André Lureau Message-Id: <17fa1eff729eeabd9a001f4639abccb127ceec81.1661240709.git.tugy@chinatelecom.cn> --- util/oslib-posix.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'util/oslib-posix.c') diff --git a/util/oslib-posix.c b/util/oslib-posix.c index d55af69..827a7aa 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -253,6 +253,25 @@ void qemu_set_cloexec(int fd) assert(f != -1); } +int qemu_socketpair(int domain, int type, int protocol, int sv[2]) +{ + int ret; + +#ifdef SOCK_CLOEXEC + ret = socketpair(domain, type | SOCK_CLOEXEC, protocol, sv); + if (ret != -1 || errno != EINVAL) { + return ret; + } +#endif + ret = socketpair(domain, type, protocol, sv);; + if (ret == 0) { + qemu_set_cloexec(sv[0]); + qemu_set_cloexec(sv[1]); + } + + return ret; +} + char * qemu_get_local_state_dir(void) { -- cgit v1.1