Parallel and shared memory library
Library hack_parallel.interface

* Basic lock operations. * * We use these for two reasons: * 1. making sure we are only running one instance of hh_server per person on a given dev box * 2. giving a way to hh_client to check if a server is running.

val register_lock : SMap.key -> Unix.file_descr
val _operations : SMap.key -> Unix.lock_command -> bool

* Grab or check if a file lock is available. * * Returns true if the lock is/was available, false otherwise.

val grab : SMap.key -> bool

* Grabs the file lock and returns true if it the lock was grabbed

val release : SMap.key -> bool

* Releases a file lock.

val blocking_grab_then_release : SMap.key -> unit
val fd_of : SMap.key -> int

* Gets the server instance-unique integral fd for a given lock file.

val check : SMap.key -> bool

* Check if the file lock is available without grabbing it. * Returns true if the lock is free.