úÎ0«/ú     Safe-InferedThe numeric type used by % for chunk size recommendations when  moving data. GMoves data between two file descriptors without copying between kernel < address space and user address space. It transfers up to len bytes of ! data from the file descriptor fd_in to the file descriptor fd_out, 6 where one of the descriptors must refer to a pipe.  is NOT+ a loop and needs to be called repeatedly. For an example, see . EAttempt to move pages instead of copying. This is only a hint to the % kernel: pages may stil be copied (in kernel address space) if the kernel B cannot move the pages from the pipe, or if the pipe buffers don' t refer to  full pages. )More data will be coming in a subsequent . This is a helpful hint  when fd_out refers to a socket. Do not block on I/O. This makes the  pipe operations  nonblocking, but ) may nevertheless block because the file  descriptors that are d to/%from may block (unless they have the   O_NONBLOCK flag set). fd_in. off_in. fd_out. off_out. len. flags. 3number of bytes moved if successful; otherwise -1.  Safe-InferedJThe numeric type to recommend chunk sizes for moving data between sockets : used by both zero-copy and portable implementations of . Indicates whether 3 uses zero-copy system calls or the portable user ! space Haskell implementation. ,Pipes data from one socket to another in an  infinite loop. $ currently has two implementations:  on GNU/ Linux using  "E  A splice len (sIn, _ ) (sOut, _ ) = ... fdSplice ...  %on all other operating systems using   "E  A splice len (_ , Just hIn) (_ , Just hOut) = ... hSplice ...  Notes   and  implementation of  are only available  on GNU/Linux.    is always available and the   implementation of   can be forced on GNU/Linux by defining the portable flag at  compile time. GNU/Linux splice() system call loop. ( creates a pipe in kernel address space 0 uses it until the loop terminates by exception  closes the pipe and returns The portable Haskell loop.  allocates a single% memory buffer in user address space 0 uses it until the loop terminates by exception  frees the buffer and returns  Similar to $ but used when an obvious exception 1 is expected and can be handled easily. Unlike   exceptions are  not rethrown once handled.  Similar to $ but used when an obvious exception , is expected which can be safely ignored. True if  uses zero-copy system calls;  otherwise, false.  chunk size. .source socket and possibly its opened handle. .target socket and possibly its opened handle. infinite loop.  exception handler. action to run which can throw any exception. 9new action where all exceptions are handled by a single. action to run which can throw any exception. *new action where exceptions are silenced.    Safe-Infered         splice-0.5System.IO.Splice.LinuxNetwork.Socket.SpliceNetwork.Socket.Splice.InternalspliceControl.Exception.Basetry ChunkSizec_splice sPLICE_F_MOVE sPLICE_F_MOREsPLICE_F_NONBLOCKzeroCopyfdSplicehSplicetryWithtry_basefinally