Fix EINTR handling
The return value of read will not be errno directly. Fix it and use TEMP_FAILURE_RETRY for read/write Test: Builds OK Change-Id: Ic128156f881e2ce4609d9a66269405272291fbdc
This commit is contained in:
parent
a8c0faa120
commit
57e0882c77
@ -325,8 +325,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t readBuffer[AMIDI_PACKET_SIZE];
|
uint8_t readBuffer[AMIDI_PACKET_SIZE];
|
||||||
ssize_t readCount = read(mPort->ufd, readBuffer, sizeof(readBuffer));
|
ssize_t readCount = TEMP_FAILURE_RETRY(read(mPort->ufd, readBuffer, sizeof(readBuffer)));
|
||||||
if (readCount == EINTR || readCount < 1) {
|
if (readCount < 1) {
|
||||||
return AMEDIA_ERROR_UNKNOWN;
|
return AMEDIA_ERROR_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,7 +407,8 @@ ssize_t AMIDI_API AMidiInputPort_sendWithTimestamp(const AMidiInputPort *inputPo
|
|||||||
|
|
||||||
ssize_t numTransferBytes =
|
ssize_t numTransferBytes =
|
||||||
AMIDI_makeSendBuffer(writeBuffer, data + numSent, blockSize, timestamp);
|
AMIDI_makeSendBuffer(writeBuffer, data + numSent, blockSize, timestamp);
|
||||||
ssize_t numWritten = write(((AMIDI_Port*)inputPort)->ufd, writeBuffer, numTransferBytes);
|
ssize_t numWritten = TEMP_FAILURE_RETRY(write(((AMIDI_Port*)inputPort)->ufd, writeBuffer,
|
||||||
|
numTransferBytes));
|
||||||
if (numWritten < 0) {
|
if (numWritten < 0) {
|
||||||
break; // error so bail out.
|
break; // error so bail out.
|
||||||
}
|
}
|
||||||
@ -430,7 +431,8 @@ media_status_t AMIDI_API AMidiInputPort_sendFlush(const AMidiInputPort *inputPor
|
|||||||
|
|
||||||
uint8_t opCode = AMIDI_OPCODE_FLUSH;
|
uint8_t opCode = AMIDI_OPCODE_FLUSH;
|
||||||
ssize_t numTransferBytes = 1;
|
ssize_t numTransferBytes = 1;
|
||||||
ssize_t numWritten = write(((AMIDI_Port*)inputPort)->ufd, &opCode, numTransferBytes);
|
ssize_t numWritten = TEMP_FAILURE_RETRY(write(((AMIDI_Port*)inputPort)->ufd, &opCode,
|
||||||
|
numTransferBytes));
|
||||||
|
|
||||||
if (numWritten < numTransferBytes) {
|
if (numWritten < numTransferBytes) {
|
||||||
ALOGE("AMidiInputPort_flush Couldn't write MIDI flush. requested:%zd, written:%zd",
|
ALOGE("AMidiInputPort_flush Couldn't write MIDI flush. requested:%zd, written:%zd",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user