s6: the s6lockd-helper internal program
Keywords: s6 s6lockd-helper lockd asynchronous timed lock daemon helper

libs6
s6
Software
skarnet.org

# The `s6lockd-helper` program

`s6lockd-helper` is a helper program for the s6lock daemon. It just acquires a lock and holds it until it is killed or told to exit by its parent daemon.

## Interface

s6lockd-helper is not meant to be invoked directly by the user: it will be spawned by the s6lockd program.

## Notes

- s6lockd-helper blocks on lock acquisition until it succeeds. It then notifies its parent. It exits when its parent tells him to (i.e. when the client asks for lock release). During the lock acquisition phase, it can be killed if its parent detects a timeout.
- One s6lockd-helper process per lock is the only way (apart from threads) to implement timed lock acquisition. This can lead to a lot of s6lockd-helper processes, but this is not a problem:
  - Processes are not a scarce resource. Today's schedulers work in O(1), or in O(a function of the number of runnable processes), which means that a sleeping process takes no scheduling time at all
  - s6lockd-helper is extremely tiny. Every instance should use up at most one or two pages of non-sharable memory.