diff options
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/fd.c | 69 | ||||
-rw-r--r-- | src/fd.h | 33 | ||||
-rw-r--r-- | src/intel_device.c | 35 |
4 files changed, 105 insertions, 34 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index e87f030d..b7ccde6c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -52,6 +52,8 @@ endif NULL:=# intel_drv_la_SOURCES = \ + fd.h \ + fd.c \ i915_pciids.h \ intel_list.h \ intel_options.h \ 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; +} + diff --git a/src/fd.h b/src/fd.h new file mode 100644 index 00000000..c860e0af --- /dev/null +++ b/src/fd.h @@ -0,0 +1,33 @@ +/*************************************************************************** + + 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. + + **************************************************************************/ + +#ifndef FD_H +#define FD_H + +int fd_set_cloexec(int fd); +int fd_set_nonblock(int fd); + +#endif /* FD_H */ diff --git a/src/intel_device.c b/src/intel_device.c index e6fda195..d0c80920 100644 --- a/src/intel_device.c +++ b/src/intel_device.c @@ -53,6 +53,7 @@ #endif #include "intel_driver.h" +#include "fd.h" struct intel_device { char *master_node; @@ -142,40 +143,6 @@ static int __intel_check_device(int fd) return ret; } -static 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; -} - -static 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; -} - static int __intel_open_device(const struct pci_device *pci, char **path) { int fd; |