Lines Matching defs:stdio

70 static bool stdio_redirect_has_input(struct stdio_redirect *stdio)
72 return stdio->input.buf.nr || stdio->done;
75 static bool stdio_redirect_has_output(struct stdio_redirect *stdio)
77 return stdio->output.buf.nr || stdio->done;
82 static bool stdio_redirect_has_input_space(struct stdio_redirect *stdio)
84 return stdio->input.buf.nr < STDIO_REDIRECT_BUFSIZE || stdio->done;
87 static bool stdio_redirect_has_output_space(struct stdio_redirect *stdio)
89 return stdio->output.buf.nr < STDIO_REDIRECT_BUFSIZE || stdio->done;
104 thr->stdio.done = true;
105 wake_up(&thr->stdio.input.wait);
106 wake_up(&thr->stdio.output.wait);
114 struct stdio_buf *buf = &thr->stdio.output;
119 ret = wait_event_interruptible(buf->wait, stdio_redirect_has_output(&thr->stdio));
122 } else if (!stdio_redirect_has_output(&thr->stdio))
156 darray_exit(&thr->stdio.input.buf);
157 darray_exit(&thr->stdio.output.buf);
167 struct stdio_buf *buf = &thr->stdio.input;
206 stdio_redirect_has_input_space(&thr->stdio));
220 poll_wait(file, &thr->stdio.output.wait, wait);
221 poll_wait(file, &thr->stdio.input.wait, wait);
225 if (stdio_redirect_has_output(&thr->stdio))
227 if (stdio_redirect_has_input_space(&thr->stdio))
239 poll_wait(file, &thr->stdio.output.wait, wait);
243 if (stdio_redirect_has_output(&thr->stdio))
300 stdio_buf_init(&thr->stdio.input);
301 stdio_buf_init(&thr->stdio.output);
321 stdio_buf_init(&thr->stdio.input);
322 stdio_buf_init(&thr->stdio.output);
329 int bch2_stdio_redirect_read(struct stdio_redirect *stdio, char *ubuf, size_t len)
331 struct stdio_buf *buf = &stdio->input;
338 wait_event_timeout(buf->wait, stdio_redirect_has_input(stdio),
340 } while (!stdio_redirect_has_input(stdio));
342 if (stdio->done)
358 int bch2_stdio_redirect_readline(struct stdio_redirect *stdio, char *ubuf, size_t len)
360 struct stdio_buf *buf = &stdio->input;
365 wait_event_timeout(buf->wait, stdio_redirect_has_input(stdio),
367 } while (!stdio_redirect_has_input(stdio));
369 if (stdio->done) {
421 ssize_t bch2_stdio_redirect_vprintf(struct stdio_redirect *stdio, bool nonblocking,
424 struct stdio_buf *buf = &stdio->output;
438 stdio_redirect_has_output_space(stdio));
448 ssize_t bch2_stdio_redirect_printf(struct stdio_redirect *stdio, bool nonblocking,
455 ret = bch2_stdio_redirect_vprintf(stdio, nonblocking, fmt, args);