major revisions

This commit is contained in:
Jeff Hill
2000-04-28 01:29:00 +00:00
parent 68c049fa73
commit 547f1b15fa
56 changed files with 8019 additions and 7241 deletions

View File

@@ -64,19 +64,6 @@ int cacRingBufferConstruct (ringBuffer *pBuf)
*/
void cacRingBufferDestroy (ringBuffer *pBuf)
{
/*
* force any read/write/reserve/commit ops in
* other threads to complete
*/
pBuf->shutDown = 1u;
semBinaryGive (pBuf->readSignal);
semBinaryGive (pBuf->writeSignal);
semMutexMustTake (pBuf->readLock);
semMutexMustTake (pBuf->writeLock);
/*
* clean up
*/
semBinaryDestroy (pBuf->readSignal);
semBinaryDestroy (pBuf->writeSignal);
semMutexDestroy (pBuf->readLock);
@@ -313,16 +300,16 @@ unsigned cacRingBufferWrite (ringBuffer *pRing, const void *pBuf,
unsigned totalBytes = 0;
unsigned curBytes;
semMutexMustTake (pRing->writeLock);
semMutexMustTake ( pRing->writeLock );
while (totalBytes<nBytes) {
curBytes = cacRingBufferWritePartial (pRing,
pBufTmp+totalBytes, nBytes-totalBytes);
if (curBytes==0) {
semBinaryGive (pRing->readSignal);
semBinaryMustTake (pRing->writeSignal);
if (pRing->shutDown) {
semMutexGive (pRing->writeLock);
while ( totalBytes < nBytes ) {
curBytes = cacRingBufferWritePartial ( pRing,
pBufTmp+totalBytes, nBytes-totalBytes );
if ( curBytes == 0 ) {
semBinaryGive ( pRing->readSignal );
semBinaryMustTake ( pRing->writeSignal );
if ( pRing->shutDown ) {
semMutexGive ( pRing->writeLock );
return totalBytes;
}
}
@@ -331,16 +318,21 @@ unsigned cacRingBufferWrite (ringBuffer *pRing, const void *pBuf,
}
}
semMutexGive (pRing->writeLock);
semMutexGive ( pRing->writeLock );
return totalBytes;
}
void cacRingBufferWriteLock (ringBuffer *pBuf)
{
semMutexMustTake (pBuf->writeLock);
}
bool cacRingBufferWriteLockNoBlock (ringBuffer *pBuf, unsigned bytesRequired)
{
semMutexMustTake (pBuf->writeLock);
if (cacRingBufferWriteSize (pBuf)<bytesRequired) {
if ( cacRingBufferWriteSize (pBuf) < bytesRequired ) {
semMutexGive (pBuf->writeLock);
return false;
}
@@ -450,12 +442,20 @@ void cacRingBufferReadCommit (ringBuffer *pRing, unsigned delta)
semMutexGive (pRing->readLock);
}
void cacRingBufferWriteFlush (ringBuffer *pRing)
bool cacRingBufferWriteFlush (ringBuffer *pRing)
{
semBinaryGive (pRing->readSignal);
if ( cacRingBufferReadSize (pRing) ) {
semBinaryGive (pRing->readSignal);
return true;
}
return false;
}
void cacRingBufferReadFlush (ringBuffer *pRing)
bool cacRingBufferReadFlush (ringBuffer *pRing)
{
semBinaryGive (pRing->writeSignal);
if ( cacRingBufferWriteSize (pRing) ) {
semBinaryGive (pRing->writeSignal);
return true;
}
return false;
}