MyNixOS website logo
Description

File locking.

This package provides access to platform dependent file locking APIs:

  • Open file descriptor locking on Linux (Lukko.OFD)

  • BSD-style flock(2) locks on UNIX platforms (Lukko.FLock)

  • Windows locking via LockFileEx (Lukko.Windows)

  • No-op locking, which throws exceptions (Lukko.NoOp)

  • Lukko module exports the best option for the target platform with uniform API.

There are alternative file locking packages:

  • GHC.IO.Handle.Lock in base >= 4.10 is good enough for most use cases. However, uses only Handles so these locks cannot be used for intra-process locking. (You should use e.g. MVar in addition).

  • filelock doesn't support OFD locking.

Lukko means lock in Finnish.

Submodules Lukko.OFD, Lukko.Windows etc are available based on following conditions.

if os(windows)
  cpp-options: -DHAS_WINDOWS_LOCK

elif (os(linux) && flag(ofd-locking))
  cpp-options: -DHAS_OFD_LOCKING
  cpp-options: -DHAS_FLOCK

elif !(os(solaris) || os(aix))
  cpp-options: -DHAS_FLOCK

Lukko.FLock is available on not (Windows or Solaris or AIX). Lukko.NoOp is always available.

Metadata

Version

0.1.2

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows