is_sig_int_occurred = 1;
}
}
+
+const struct timespec nonblock_sleep = {.tv_sec = 0, .tv_nsec = 1000000};
#endif
typedef struct SDArchiverInternalToWrite {
ret = write(pipe_into_cmd[1], write_buf, write_count);
if (ret == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
+ nanosleep(&nonblock_sleep, NULL);
write_again = 1;
} else {
// Error during write.
// fprintf(stderr, "read_done\n");
} else if (ret == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
- // Nop.
+ nanosleep(&nonblock_sleep, NULL);
} else {
// Read error.
fprintf(stderr,
} else {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// Non-blocking read from pipe.
+ nanosleep(&nonblock_sleep, NULL);
continue;
} else {
// Error.
} else {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// Non-blocking read from pipe.
+ nanosleep(&nonblock_sleep, NULL);
continue;
} else {
// Error.
// Non-blocking write.
has_hold = (int)fread_ret;
memcpy(hold_buf, buf, fread_ret);
+ nanosleep(&nonblock_sleep, NULL);
} else {
fprintf(
stderr,
if (write_ret < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// Non-blocking write.
+ nanosleep(&nonblock_sleep, NULL);
} else {
return SDAS_INTERNAL_ERROR;
}
if (read_ret < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// Non-blocking read.
+ nanosleep(&nonblock_sleep, NULL);
} else {
fprintf(stderr,
"ERROR: Reading from compressor, pipe read error!\n");
if (read_ret < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// Non-blocking read.
+ nanosleep(&nonblock_sleep, NULL);
} else {
fprintf(stderr,
"ERROR: Reading from compressor, pipe read error!\n");
}
} else if (write_ret == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
+ nanosleep(&nonblock_sleep, NULL);
write_again = 1;
} else {
// Error.
} else if (read_ret == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
// No bytes to read yet.
+ nanosleep(&nonblock_sleep, NULL);
} else {
// Error.
fprintf(stderr,