lib: xpc: implement scatter/gather i/o for buffers and messages

This commit is contained in:
2026-03-24 12:40:16 +00:00
parent af3dd454b0
commit 1eb6853cb0
5 changed files with 162 additions and 18 deletions

View File

@@ -1,6 +1,7 @@
#ifndef XPC_BUFFER_H_
#define XPC_BUFFER_H_
#include <mango/types.h>
#include <stddef.h>
#include <xpc/status.h>
@@ -71,13 +72,31 @@ typedef struct xpc_buffer {
extern xpc_status_t xpc_buffer_read(
const xpc_buffer_t *s,
size_t offset,
void *out,
size_t max,
size_t *nr_read);
extern xpc_status_t xpc_buffer_write(
xpc_buffer_t *s,
size_t offset,
const void *in,
size_t len,
size_t *nr_written);
extern xpc_status_t xpc_buffer_readv(
const xpc_buffer_t *s,
size_t offset,
kern_iovec_t *iov,
size_t nr_iov,
size_t *nr_read);
extern xpc_status_t xpc_buffer_writev(
xpc_buffer_t *s,
size_t offset,
kern_iovec_t *iov,
size_t nr_iov,
size_t *nr_written);
extern xpc_status_t xpc_buffer_length(const xpc_buffer_t *s);
extern xpc_status_t xpc_buffer_capacity(const xpc_buffer_t *s);
#endif

View File

@@ -34,7 +34,8 @@ extern kern_status_t xpc_msg_read(
const xpc_msg_t *msg,
size_t offset,
void *p,
size_t count);
size_t count,
size_t *nr_read);
extern kern_status_t xpc_msg_write(
const xpc_msg_t *msg,
size_t offset,
@@ -42,6 +43,19 @@ extern kern_status_t xpc_msg_write(
size_t count,
size_t *nr_written);
extern kern_status_t xpc_msg_readv(
const xpc_msg_t *msg,
size_t offset,
kern_iovec_t *iov,
size_t nr_iov,
size_t *nr_read);
extern kern_status_t xpc_msg_writev(
const xpc_msg_t *msg,
size_t offset,
kern_iovec_t *iov,
size_t nr_iov,
size_t *nr_written);
extern kern_status_t xpc_msg_reply(
const xpc_msg_t *msg,
kern_iovec_t *iov,