1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
|
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
|
-
|
ReleaseSRWLockShared(&gConsoleLock);
return 0; /* EOF */
}
AcquireSRWLockExclusive(&handleInfoPtr->lock);
ReleaseSRWLockShared(&gConsoleLock); /* AFTER acquiring handleInfoPtr->lock */
while (1) {
int freeSpace = RingBufferFreeSpace(&handleInfoPtr->buffer);
numRead = RingBufferOut(&handleInfoPtr->buffer, bufPtr, bufSize, 1);
/*
* Note: even if channel is closed or has an error, as long there is
* buffered data, we will pass it up.
*/
if (numRead != 0) {
/* If console thread was blocked, awaken it */
|