6#if defined(DART_HOST_OS_MACOS)
24 perror(
"fcntl(F_GETFD) failed");
29 perror(
"fcntl(F_SETFD, FD_CLOEXEC) failed");
35static bool SetBlockingHelper(intptr_t fd,
bool blocking) {
39 perror(
"fcntl(F_GETFL) failed");
42 status = blocking ? (status & ~O_NONBLOCK) : (status | O_NONBLOCK);
44 perror(
"fcntl(F_SETFL, O_NONBLOCK) failed");
51 return SetBlockingHelper(fd,
false);
55 return SetBlockingHelper(fd,
true);
64 *is_blocking = (status & O_NONBLOCK) == 0;
75 return static_cast<intptr_t
>(available);
80 bool is_blocking =
false;
84 size_t remaining =
count;
85 char* buffer_pos =
reinterpret_cast<char*
>(
buffer);
86 while (remaining > 0) {
88 if (bytes_read == 0) {
89 return count - remaining;
90 }
else if (bytes_read == -1) {
91 ASSERT(EAGAIN == EWOULDBLOCK);
94 ASSERT(errno != EWOULDBLOCK);
98 remaining -= bytes_read;
99 buffer_pos += bytes_read;
107 bool is_blocking =
false;
111 size_t remaining =
count;
112 char* buffer_pos =
const_cast<char*
>(
reinterpret_cast<const char*
>(
buffer));
113 while (remaining > 0) {
114 ssize_t bytes_written =
116 if (bytes_written == 0) {
117 return count - remaining;
118 }
else if (bytes_written == -1) {
119 ASSERT(EAGAIN == EWOULDBLOCK);
122 ASSERT(errno != EWOULDBLOCK);
125 ASSERT(bytes_written > 0);
126 remaining -= bytes_written;
127 buffer_pos += bytes_written;
static bool read(SkStream *stream, void *buffer, size_t amount)
static intptr_t AvailableBytes(intptr_t fd)
static bool SetCloseOnExec(intptr_t fd)
static bool SetBlocking(intptr_t fd)
static bool IsBlocking(intptr_t fd, bool *is_blocking)
static bool SetNonBlocking(intptr_t fd)
static void SaveErrorAndClose(intptr_t fd)
static ssize_t ReadFromBlocking(int fd, void *buffer, size_t count)
static ssize_t WriteToBlocking(int fd, const void *buffer, size_t count)
static const uint8_t buffer[]
#define NO_RETRY_EXPECTED(expression)
#define TEMP_FAILURE_RETRY(expression)
void write(SkWStream *wStream, const T &text)