ssize_t read(int d, void *buf, size_t nbytes) { ssize_t retval; pthread_t self; self = pthread__self(); TESTCANCEL(self); retval = _sys_read(d, buf, nbytes); TESTCANCEL(self); return retval; }
extern "C" int _read(int file, char *ptr, int len) { int BytesNotRead; /* Open stdin/stdout/stderr if needed */ if (MRI_SEMIHOST_STDIO && file < 3) { return __mriNewlib_SemihostRead(file, ptr, len); } else if (!g_StandardHandlesOpened && file < 3) { __GCC4MBEDOpenStandardHandles(); } /* Call the function in mbed.ar and let it handle the read */ BytesNotRead = _sys_read(file, (unsigned char*)ptr, len, 0); /* EOF is indicated by setting the most significant bit so mask it off */ BytesNotRead &= 0x7FFFFFFF; /* The mbed version of the function returns bytes not read and newlib wants bytes read count */ return len - BytesNotRead; }