diff options
author | David Härdeman <david@hardeman.nu> | 2020-06-05 19:34:52 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2020-06-05 19:34:52 +0200 |
commit | a683051b05930d1dd2766b98494bbd124817a6dd (patch) | |
tree | dcc2ab910af026c8cf32df5dc7d548a665098082 /uring.c | |
parent | 3d2d0d4b3aa64aba018b049edf9c0396d5a598d5 (diff) |
Implement more proxy functionality
Diffstat (limited to 'uring.c')
-rw-r--r-- | uring.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -142,6 +142,25 @@ uring_close(struct cfg *cfg, struct uring_task *task, int fd, callback_t callbac } void +uring_write(struct cfg *cfg, struct uring_task *task, void *buf, size_t len, callback_t callback) +{ + struct io_uring_sqe *sqe = io_uring_get_sqe(&cfg->uev->uring); + + if (!sqe) + perrordie("io_uring_sqe"); + + if (task->fd < 0) { + error("uring_write called with no fd set\n"); + return; + } + + uring_task_get(cfg, task); + task->callback = callback; + io_uring_prep_write(sqe, task->fd, buf, len, 0); + io_uring_sqe_set_data(sqe, task); +} + +void uring_read(struct cfg *cfg, struct uring_task *task, void *buf, size_t len, off_t offset, callback_t callback) { struct io_uring_sqe *sqe = io_uring_get_sqe(&cfg->uev->uring); |