diff --git a/app/src/util/process_intr.c b/app/src/util/process_intr.c index bb483123..a930035d 100644 --- a/app/src/util/process_intr.c +++ b/app/src/util/process_intr.c @@ -14,3 +14,31 @@ sc_process_check_success_intr(struct sc_intr *intr, sc_pid pid, sc_intr_set_process(intr, SC_PROCESS_NONE); return ret; } + +ssize_t +sc_pipe_read_intr(struct sc_intr *intr, sc_pid pid, sc_pipe pipe, char *data, + size_t len) { + if (!sc_intr_set_process(intr, pid)) { + // Already interrupted + return false; + } + + ssize_t ret = sc_pipe_read(pipe, data, len); + + sc_intr_set_process(intr, SC_PROCESS_NONE); + return ret; +} + +ssize_t +sc_pipe_read_all_intr(struct sc_intr *intr, sc_pid pid, sc_pipe pipe, + char *data, size_t len) { + if (!sc_intr_set_process(intr, pid)) { + // Already interrupted + return false; + } + + ssize_t ret = sc_pipe_read_all(pipe, data, len); + + sc_intr_set_process(intr, SC_PROCESS_NONE); + return ret; +} diff --git a/app/src/util/process_intr.h b/app/src/util/process_intr.h index ff0dfc76..54cb9226 100644 --- a/app/src/util/process_intr.h +++ b/app/src/util/process_intr.h @@ -10,4 +10,12 @@ bool sc_process_check_success_intr(struct sc_intr *intr, sc_pid pid, const char *name); +ssize_t +sc_pipe_read_intr(struct sc_intr *intr, sc_pid pid, sc_pipe pipe, char *data, + size_t len); + +ssize_t +sc_pipe_read_all_intr(struct sc_intr *intr, sc_pid pid, sc_pipe pipe, + char *data, size_t len); + #endif