-*- emacs-wiki -*-

Pluto helpers are started by pluto to do cryptographic operations.

Pluto will start n-1 of them, where n is the number of CPUs that you have
(including hypher threaded CPUs). If you have fewer than 2 CPUs, you will
always get at least one helper. 

You can tell pluto never to start any helpers with the command line option
--nhelpers. A value of 0 forces pluto to do all operations in the main
process. A value of -1 tells pluto to perform the above calculation. Any
other value forces the number to that amount.

The sub-process diddle with their process titles as follows: they set the
argv[0] to "pluto helper". If an --interface line has been specified, then
they insert that string, and finally, the process helper number. e.g:

22174 ?        Ss     0:00 /0i/sandboxes/aggr/programs/pluto/pluto --lwdnsq /0i/sandboxes/aggr/programs/lwdnsq/lwdnsq --ctlbase pluto.west --interface lo:w --ikep
22177 ?        S      0:00 pluto helper lo:w   0 (waiting for GDB)                                                                                                
22179 ?        S      0:00 lwdnsq -d
22185 ?        Ss     0:00 /0i/sandboxes/aggr/programs/pluto/pluto --lwdnsq /0i/sandboxes/aggr/programs/lwdnsq/lwdnsq --ctlbase pluto.east --interface lo:e --ikep
22188 ?        S      0:00 pluto helper lo:e   0 (waiting for GDB)                                                                                                
22189 ?        S      0:00 lwdnsq -d

If the environment variable $PLUTO_CRYPTO_HELPER_DEBUG exists, then the
helper will mark itself as waiting, and sleep for 60 seconds. This gives a
developer time to attach a GDB to the process. After 60 seconds, the helper
changes its title back, and continues. The variable can be set with:

   export PLUTO_CRYPTO_HELPER_DEBUG=true

Debug output from the helpers should go to the same destination as pluto
output. It may be interleaved, however. The helper uses "!" instead of "|" as
a prefix for its debug output.

