The Ada spawn manager implements the concept described in the GNAT GPL package System.OS_Lib. It is used to solve the problem of spawning processes at arbitrary times from multitasking Ada programs:
If the parent is using tasking, and needs to spawn subprocesses at arbitrary times, one technique is for the parent to spawn (very early) a particular spawn-manager subprocess whose job is to spawn other processes. The spawn-manager avoids tasking. The parent sends messages to the spawn-manager requesting it to spawn processes, using whatever inter-process communication mechanism you like, such as sockets.
SYSTEM.OS_LIB specification
The Ada spawn manager uses UNIX domain sockets provided by the Anet library to implement fast and simple IPC.
Licence
Copyright (C) 2012, 2015 secunet Security Networks AG Copyright (C) 2012, 2015 Reto Buerki <reet@codelabs.ch> Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL).
Download
The Spawn Manager sources are available through its git repository:
$ git clone http://git.codelabs.ch/git/spawn-manager.git
A browsable version of the repository is also available here: http://git.codelabs.ch/?p=spawn-manager.git
Build
To compile the spawn manager on your system, you need to have the following software installed:
-
GNAT compiler: http://www.gnu.org/software/gnat/gnat.html
-
Anet - Ada Networking Library: http://www.codelabs.ch/anet/
If you want to run the unit tests before installation (which is recommended) you furthermore need to have the following installed:
-
Ahven (Test-Framework): http://ahven.stronglytyped.org/