Since a single read may not fill the buffer entirely, this makes try
to fill the buffer fully with loop.
Change-Id: Ic73daf50b060f37c773774108952dbdf30de07e1
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
static ssize_t usb_rx_data(int fd, void *buf, ssize_t len)
{
- return read(fd, buf, len);
+ ssize_t r, count = 0;
+
+ do {
+ r = read(fd, buf + count, len - count);
+ if (r < 0) {
+ if (errno == EINTR)
+ continue;
+ else
+ return r;
+ }
+ count += r;
+ } while (count < len);
+
+ return count;
}
static ssize_t usb_tx_data(int fd, void *buf, ssize_t len)