Persistent Memory Development Kit

This is src/test/vmmalloc_fork/README.

This directory contains a multithreaded unit test for libvmmalloc fork() support.

The program in vmmalloc_fork.c takes: 'operation', 'nfork' and 'nthread' arguments.
Operation can be:
    c - child process is a duplicate of the parent
    e - child process calls execl() immediately after fork

The test allocates some amount of memory first, then spawns a number of threads,
that also allocate memory in a loop.  While the new threads are running, the main
thread creates a new process by calling fork().

If 'operation' is 'c', then each child process performs the same
actions as parent, spawning new threads and a new process, until some predefined
number of processes is reached.  'nfork' argument defines a maximum height of
the process tree, so eventually, there could be 2^nfork processes created,
each running 'nthread' threads.

For example:
	./vmmalloc_fork c 4 2

This will create 16 (2^4) processes, each running 3 threads (1 + 2).

If 'operation' is 'e', then when the 'nfork' limit is reached, the child process
calls execl() immediately after fork(), executing another program.
