[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

	Vacate -- release a bitMessage from Procure()                    (V39)

	Vacate(semaphore, bidMessage)
	       A0         A1

	void Vacate(struct SignalSemaphore *,struct SemaphoreMessage *);

	This function can be used to release a semaphore obtained via
	Procure().  However, the main purpose for this call is to be
	able to remove a bid for a semaphore that has not yet responded.
	This is required when a Procure() was issued and the program
	no longer needs to get the semaphore and wishes to cancel the
	Procure() request.  The canceled request will be replied with
	the ssm_Semaphore field set to NULL.  If you own the semaphore,
	the message was already replied and only the ssm_Semaphore field
	will be cleared.

	NOTE:  Pre-V39, Procure() and Vacate() did not work correctly.
	They also did not operate on SignalSemaphore semaphores.
	Old (and broken) MessageSemaphore use as of V39 will no longer work.

	semaphore - The SignalSemaphore that you wish to Vacate()
	bidMessage- The SemaphoreMessage that you wish to abort.
		The message's ssm_Semaphore field will be cleared.
		The message will be replied if it is still on the waiting
		list.  If it is not on the waiting list, it is assumed
		that the semaphore is owned and it will be released.

	Before V39, Procure() and Vacate() used a different semaphore
	system that was very broken.  This new system is only available
	as of V39 even though the LVOs are the same.

	ObtainSemaphoreShared(), InitSemaphore(), ReleaseSemaphore(),
	AttemptSemaphore(), ObtainSemaphoreList(), Procure(), ObtainSemaphore()