MyNixOS website logo
Description

Thinner binding to the Linux Kernel's inotify interface.

This is a binding for GHC 7 to the Linux Kernel's inotify interface, which provides notifications to applications regarding file system events, such as file creation, modification, deletion, etc.

Some of the advantages over hinotify are:

  1. linux-inotify provides a plain getEvent operator that blocks, instead of implementing a callback API.

  2. linux-inotify avoids most of GHC's standard IO handling code, relying on plain system calls with minimal overhead in Haskell-land. (However, it still does make good use of GHC's IO manager via nonblocking inotify sockets and threadWaitRead, so getEvent is still efficient.)

  3. linux-inotify does not call forkIO, which means less context switching and scheduling overhead, especially in contexts where hinotify's particular event router isn't a very good fit for your application; e.g. you are implementing a following log file processor.

Some of the disadvantages compared to hinotify are:

  1. Due to the use of inotify_init1, `linux-inotify` currently requires linux 2.6.27 or later, even though inotify support debuted in linux 2.6.13. You can check which version of linux is on a machine via uname `-a`. I would like to fix this at some point, but it isn't a personal priority.

  2. `linux-inotify` requires GHC 7.8.1 or later, whereas hinotify works with many versions of GHC 6. I have no plans to fix this.

Metadata

Version

0.3.0.2

Platforms (21)

    Linux
Show all
  • aarch64-linux
  • armv5tel-linux
  • armv6l-linux
  • armv7a-linux
  • armv7l-linux
  • i686-linux
  • loongarch64-linux
  • m68k-linux
  • microblaze-linux
  • microblazeel-linux
  • mips-linux
  • mips64-linux
  • mips64el-linux
  • mipsel-linux
  • powerpc64-linux
  • powerpc64le-linux
  • riscv32-linux
  • riscv64-linux
  • s390-linux
  • s390x-linux
  • x86_64-linux