История изменений
Исправление
gaylord,
(текущая версия)
:
Буквально вот:
#include <err.h>
#include <liburing.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
struct io_uring_cqe *cqe;
struct io_uring ring;
char buf[32] = {};
int ret;
ret = io_uring_queue_init(2, &ring, 0);
if (ret)
errx(1, "cannot init io_uring ring: %s", strerror(-ret));
for (;;) {
io_uring_prep_read(io_uring_get_sqe(&ring), STDIN_FILENO, buf, sizeof(buf), 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot read: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
io_uring_prep_write(io_uring_get_sqe(&ring), STDOUT_FILENO, buf,
sizeof(buf), 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot write: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
}
return 0;
}
Исправление
gaylord,
:
Буквально вот:
#include <err.h>
#include <liburing.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
struct io_uring_cqe *cqe;
struct io_uring ring;
char buf[32 + 1] = {};
int ret;
ret = io_uring_queue_init(2, &ring, 0);
if (ret)
errx(1, "cannot init io_uring ring: %s", strerror(-ret));
for (;;) {
io_uring_prep_read(io_uring_get_sqe(&ring), STDIN_FILENO, buf, sizeof(buf) - 1, 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot read: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
io_uring_prep_write(io_uring_get_sqe(&ring), STDOUT_FILENO, buf,
sizeof(buf), 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot write: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
}
return 0;
}
Исходная версия
gaylord,
:
Буквально вот:
#include <err.h>
#include <liburing.h>
#include <string.h>
#include <unistd.h>
int main(void)
{
struct io_uring_cqe *cqe;
struct io_uring ring;
char buf[32 + 1] = {};
int ret;
ret = io_uring_queue_init(2, &ring, 0);
if (ret)
errx(1, "cannot init io_uring ring: %s", strerror(-ret));
for (;;) {
io_uring_prep_read(io_uring_get_sqe(&ring), STDIN_FILENO, buf, sizeof(buf) - 1, 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot read: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
io_uring_prep_write(io_uring_get_sqe(&ring), STDOUT_FILENO, buf,
sizeof(buf), 0);
ret = io_uring_submit_and_wait(&ring, 1);
if (ret < 0)
errx(1, "cannot submit SQEs: %s", strerror(-ret));
io_uring_wait_cqe(&ring, &cqe);
if (cqe->res < 0)
errx(1, "cannot write: %s", strerror(-ret));
io_uring_cqe_seen(&ring, cqe);
}
return 0;
}