lib: xpc: implement writing to local buffers
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include <mango/status.h>
|
||||
#include <string.h>
|
||||
#include <xpc/buffer.h>
|
||||
#include <xpc/msg.h>
|
||||
|
||||
@@ -36,8 +37,7 @@ kern_status_t xpc_buffer_write(
|
||||
size_t len,
|
||||
size_t *nr_written)
|
||||
{
|
||||
if ((buf->buf_flags & (XPC_BUFFER_F_OUT | XPC_BUFFER_F_REMOTE))
|
||||
!= (XPC_BUFFER_F_OUT | XPC_BUFFER_F_REMOTE)) {
|
||||
if (!(buf->buf_flags & XPC_BUFFER_F_OUT)) {
|
||||
return KERN_BAD_STATE;
|
||||
}
|
||||
|
||||
@@ -46,6 +46,12 @@ kern_status_t xpc_buffer_write(
|
||||
to_write = buf->buf_max;
|
||||
}
|
||||
|
||||
if (!(buf->buf_flags & XPC_BUFFER_F_REMOTE)) {
|
||||
memcpy(buf->buf_ptr, in, to_write);
|
||||
*nr_written = to_write;
|
||||
return KERN_OK;
|
||||
}
|
||||
|
||||
kern_status_t status
|
||||
= xpc_msg_write(buf->buf_origin, buf->buf_offset, in, to_write);
|
||||
if (status != KERN_OK) {
|
||||
|
||||
Reference in New Issue
Block a user