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


   NAME
	ReleaseSemaphore -- make signal semaphore available to others

   SYNOPSIS
	ReleaseSemaphore(signalSemaphore)
			 A0

	void ReleaseSemaphore(struct SignalSemaphore *);

   FUNCTION
	ReleaseSemaphore() is the inverse of ObtainSemaphore(). It makes
	the semaphore lockable to other users.	If tasks are waiting for
	the semaphore and this this task is done with the semaphore then
	the next waiting task is signalled.

	Each ObtainSemaphore() call must be balanced by exactly one
	ReleaseSemaphore() call.  This is because there is a nesting count
	maintained in the semaphore of the number of times that the current
	task has locked the semaphore. The semaphore is not released to
	other tasks until the number of releases matches the number of
	obtains.

	Needless to say, havoc breaks out if the task releases more times
	than it has obtained.

   INPUT
       signalSemaphore -- an initialized signal semaphore structure

   NOTE
	This call is guaranteed to preserve all registers.

   SEE ALSO
	InitSemaphore(), ObtainSemaphore(), ObtainSemaphoreShared()