diff options
author | Hans de Goede <hdegoede@redhat.com> | 2014-02-15 00:02:36 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2014-02-15 02:32:25 +0000 |
commit | a01548ccf192a5b1fa1f4a3e31e1634db39f6b39 (patch) | |
tree | d4ed80a5d777aaaa8c5a0d45434393e1caa63f97 /src/fd.c | |
parent | 5601f8cc330fe88eadfa7238659c5abb223e3b28 (diff) |
intel: export fd_set_cloexec / fd_set_nonblock
Allow fd_set_cloexec / fd_set_nonblock to be used outside of intel_device.c.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'src/fd.c')
-rw-r--r-- | src/fd.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/fd.c b/src/fd.c new file mode 100644 index 00000000..9e1fb6c4 --- /dev/null +++ b/src/fd.c @@ -0,0 +1,69 @@ +/*************************************************************************** + + Copyright 2013 Intel Corporation. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + IN NO EVENT SHALL INTEL, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + **************************************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <fcntl.h> +#include <unistd.h> + +#include "fd.h" + +int fd_set_cloexec(int fd) +{ + int flags; + + if (fd == -1) + return fd; + +#ifdef FD_CLOEXEC + flags = fcntl(fd, F_GETFD); + if (flags != -1) { + flags |= FD_CLOEXEC; + fcntl(fd, F_SETFD, flags); + } +#endif + + return fd; +} + +int fd_set_nonblock(int fd) +{ + int flags; + + if (fd == -1) + return fd; + + flags = fcntl(fd, F_GETFL); + if (flags != -1) { + flags |= O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + } + + return fd; +} + |