long RingBuffer_AdvanceWriteIndex( RingBuffer *rbuf, long numBytes ) { #ifdef MPSAFE /* we need to ensure that previous writes are seen before we update the write index */ WriteMemoryBarrier(); return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask; #else return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask; #endif }
long RingBuffer_AdvanceReadIndex( RingBuffer *rbuf, long numBytes ) { #ifdef MPSAFE /* we need to ensure that previous writes are always seen before updating the index. */ WriteMemoryBarrier(); return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask; #else return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask; #endif }
LogStream& StdLogStream() { static LogStream *s; ReadMemoryBarrier(); if(!s) { static StaticCriticalSection lock; lock.Enter(); if(!s) { static byte lb[sizeof(LogStream)]; LogStream *strm = new(lb) LogStream; if(!*__logfilename) sOpenVppLog(strm); WriteMemoryBarrier(); s = strm; } lock.Leave(); } return *s; }