lib: xpc: implement scatter/gather i/o for buffers and messages
This commit is contained in:
@@ -89,17 +89,17 @@ 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)
|
||||
{
|
||||
kern_iovec_t iov = IOVEC(p, count);
|
||||
size_t r = 0;
|
||||
return msg_read(
|
||||
msg->msg_sender.e_channel,
|
||||
msg->msg_sender.e_msg,
|
||||
offset,
|
||||
&iov,
|
||||
1,
|
||||
&r);
|
||||
nr_read);
|
||||
}
|
||||
|
||||
kern_status_t xpc_msg_write(
|
||||
@@ -119,6 +119,38 @@ kern_status_t xpc_msg_write(
|
||||
nr_written);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return msg_read(
|
||||
msg->msg_sender.e_channel,
|
||||
msg->msg_sender.e_msg,
|
||||
offset,
|
||||
iov,
|
||||
nr_iov,
|
||||
nr_read);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return msg_write(
|
||||
msg->msg_sender.e_channel,
|
||||
msg->msg_sender.e_msg,
|
||||
offset,
|
||||
iov,
|
||||
nr_iov,
|
||||
nr_written);
|
||||
}
|
||||
|
||||
kern_status_t xpc_msg_reply(
|
||||
const xpc_msg_t *msg,
|
||||
kern_iovec_t *iov,
|
||||
|
||||
Reference in New Issue
Block a user