SYNOPSIS
	void slow_shut_down(int minutes)

DESCRIPTION
	Schedule a shutdown for the near future. minutes is the
	desired time in minutes till the shutdown:
	 six, if just the user reserve has been put into use.
	 one, if the (smaller) master reserve has been put into use as
	      well.

	The interpreter calls this function when it runs low on
	memory. At this time, it has freed its reserve, but since it
	won't last long, the interpreter needs to be shut down. The
	delay is to give the users the opportunity to finish their
	current tasks, but don't take the 'minutes' for granted, just
	deduce the urgency from it. 
	It is possible that the driver may reallocate some memory
	after the function has been called, and then run again into a
	low memory situation, calling this function again.
	This function might load an 'Armageddon' object and tell it
	what to do. It is the Armageddon object then which performs
	the shutdown.

	Technical: The memory handling of the interpreter includes
	three reserved areas: user, system and master. All three are
	there to insure that the system shuts down gracefully when the
	memory runs out: the user area to give the users time to
	quit normally, the others to enable emergency-logouts when the
	user reserve is used up as well.
	The areas are allocated at start of the interpreter, and
	released when no more memory could be obtained from the host.
	In such a case, one of the remaining areas is freed (so the
	operation can continue a short while) and a garbage collection
	is initiated. If the garbage collection recycles enough memory
	(either true garbage or by the aid of the quota_demon) to
	reallocate the areas, all is fine, else the system shut down
	is invoked by a call to this function. 

SEE ALSO
	quota_demon(M), notify_shutdown(M), shutdown(E), malloc(D), memory(C)
