lib: xpc: implement scatter/gather i/o for buffers and messages
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user