HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Moduleunix-2.8.7.0Haskell2010

System.Posix.Fcntl

POSIX file control support

  • 1 type
  • 4 values
  • Packageunix-2.8.7.0
  • Exports5
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceFcntl.hsc

File allocation

3 declarations
valuefileAdvise :: Fd -> FileOffset -> FileOffset -> Advice -> IO ()
#

Performs posix_fadvise(2) operation on file-descriptor.

If platform does not provide posix_fadvise(2) fileAdvise becomes a no-op.

(use #if HAVE_POSIX_FADVISE CPP guard to detect availability)

valuefileAllocate :: Fd -> FileOffset -> FileOffset -> IO ()
#

Performs posix_fallocate(2) operation on file-descriptor.

Throws IOError ("unsupported operation") if platform does not provide posix_fallocate(2).

(use #if HAVE_POSIX_FALLOCATE CPP guard to detect availability).

File caching

2 declarations
valuefileGetCaching :: Fd -> IO Bool
#

Performs the fcntl(2) operation on a file-desciptor to get the cache mode.

If the cache mode is False, then cache effects for file system reads and writes are minimised or otherwise eliminated. If the cache mode is True, then cache effects occur like normal.

On Linux, FreeBSD, and NetBSD this checks whether the O_DIRECT file flag is set.

Throws IOError ("unsupported operation") if platform does not support getting the cache mode.

Use #if HAVE_O_DIRECT CPP guard to detect availability. Use #include "HsUnix.h" to bring HAVE_O_DIRECT into scope.

valuefileSetCaching :: Fd -> Bool -> IO ()
#

Performs the fcntl(2) operation on a file-desciptor to set the cache mode.

If the cache mode is False, then cache effects for file system reads and writes are minimised or otherwise eliminated. If the cache mode is True, then cache effects occur like normal.

On Linux, FreeBSD, and NetBSD this sets the O_DIRECT file flag. On OSX, this sets the F_NOCACHE fcntl flag.

Throws IOError ("unsupported operation") if platform does not support setting the cache mode.

Use #if HAVE_O_DIRECT || HAVE_F_NOCACHE CPP guard to detect availability. Use #include "HsUnix.h" to bring HAVE_O_DIRECT and HAVE_F_NOCACHE into scope.