diff --git a/zion/include/zcall.h b/zion/include/zcall.h index f2295a8..058295d 100644 --- a/zion/include/zcall.h +++ b/zion/include/zcall.h @@ -37,25 +37,23 @@ void ZThreadExit(); [[nodiscard]] z_err_t ZChannelCreate(z_cap_t* channel1, z_cap_t* channel2); [[nodiscard]] z_err_t ZChannelSend(z_cap_t chan_cap, uint64_t num_bytes, - const uint8_t* bytes, uint64_t num_caps, + const void* data, uint64_t num_caps, const z_cap_t* caps); [[nodiscard]] z_err_t ZChannelRecv(z_cap_t chan_cap, uint64_t num_bytes, - uint8_t* bytes, uint64_t num_caps, - z_cap_t* caps, uint64_t* actual_bytes, + void* data, uint64_t num_caps, z_cap_t* caps, + uint64_t* actual_bytes, uint64_t* actual_caps); [[nodiscard]] z_err_t ZPortCreate(z_cap_t* port_cap); [[nodiscard]] z_err_t ZPortSend(z_cap_t port_cap, uint64_t num_bytes, - const uint8_t* bytes, uint64_t num_caps, + const void* data, uint64_t num_caps, z_cap_t* caps); [[nodiscard]] z_err_t ZPortRecv(z_cap_t port_cap, uint64_t num_bytes, - uint8_t* bytes, uint64_t num_caps, - z_cap_t* caps, uint64_t* actual_bytes, - uint64_t* actual_caps); + void* data, uint64_t num_caps, z_cap_t* caps, + uint64_t* actual_bytes, uint64_t* actual_caps); [[nodiscard]] z_err_t ZPortPoll(z_cap_t port_cap, uint64_t num_bytes, - uint8_t* bytes, uint64_t num_caps, - z_cap_t* caps, uint64_t* actual_bytes, - uint64_t* actual_caps); + void* data, uint64_t num_caps, z_cap_t* caps, + uint64_t* actual_bytes, uint64_t* actual_caps); [[nodiscard]] z_err_t ZIrqRegister(uint64_t irq_num, z_cap_t* port_cap); [[nodiscard]] z_err_t ZCapDuplicate(z_cap_t cap_in, z_cap_t* cap_out); diff --git a/zion/object/channel.cpp b/zion/object/channel.cpp index d1365a9..8736d42 100644 --- a/zion/object/channel.cpp +++ b/zion/object/channel.cpp @@ -37,7 +37,7 @@ z_err_t Channel::Read(ZMessage& msg) { msg.num_bytes = next_msg->num_bytes; for (uint64_t i = 0; i < msg.num_bytes; i++) { - msg.bytes[i] = next_msg->bytes[i]; + static_cast(msg.data)[i] = next_msg->bytes[i]; } msg.num_caps = next_msg->caps.size(); @@ -63,7 +63,7 @@ z_err_t Channel::EnqueueMessage(const ZMessage& msg) { message->num_bytes = msg.num_bytes; message->bytes = new uint8_t[msg.num_bytes]; for (uint64_t i = 0; i < msg.num_bytes; i++) { - message->bytes[i] = msg.bytes[i]; + message->bytes[i] = static_cast(msg.data)[i]; } // Release and store capabilities. diff --git a/zion/object/port.cpp b/zion/object/port.cpp index cdc3b22..c8440d3 100644 --- a/zion/object/port.cpp +++ b/zion/object/port.cpp @@ -14,7 +14,7 @@ z_err_t Port::Write(const ZMessage& msg) { message->num_bytes = msg.num_bytes; message->bytes = new uint8_t[msg.num_bytes]; for (uint64_t i = 0; i < msg.num_bytes; i++) { - message->bytes[i] = msg.bytes[i]; + message->bytes[i] = static_cast(msg.data)[i]; } for (uint64_t i = 0; i < msg.num_caps; i++) { @@ -57,7 +57,7 @@ z_err_t Port::Read(ZMessage& msg) { msg.num_bytes = next_msg->num_bytes; for (uint64_t i = 0; i < msg.num_bytes; i++) { - msg.bytes[i] = next_msg->bytes[i]; + static_cast(msg.data)[i] = next_msg->bytes[i]; } msg.num_caps = next_msg->caps.size(); diff --git a/zion/usr/zcall.cpp b/zion/usr/zcall.cpp index e871cbc..342b286 100644 --- a/zion/usr/zcall.cpp +++ b/zion/usr/zcall.cpp @@ -125,14 +125,14 @@ z_err_t ZChannelCreate(z_cap_t* channel1, z_cap_t* channel2) { return ret; } -z_err_t ZChannelSend(z_cap_t chan_cap, uint64_t num_bytes, const uint8_t* bytes, +z_err_t ZChannelSend(z_cap_t chan_cap, uint64_t num_bytes, const void* data, uint64_t num_caps, const z_cap_t* caps) { ZChannelSendReq req{ .chan_cap = chan_cap, .message = { .num_bytes = num_bytes, - .bytes = const_cast(bytes), + .data = const_cast(data), .num_caps = num_caps, .caps = const_cast(caps), }, @@ -140,7 +140,7 @@ z_err_t ZChannelSend(z_cap_t chan_cap, uint64_t num_bytes, const uint8_t* bytes, return SysCall1(Z_CHANNEL_SEND, &req); } -z_err_t ZChannelRecv(z_cap_t chan_cap, uint64_t num_bytes, uint8_t* bytes, +z_err_t ZChannelRecv(z_cap_t chan_cap, uint64_t num_bytes, void* data, uint64_t num_caps, z_cap_t* caps, uint64_t* actual_bytes, uint64_t* actual_caps) { ZChannelRecvReq req{ @@ -148,7 +148,7 @@ z_err_t ZChannelRecv(z_cap_t chan_cap, uint64_t num_bytes, uint8_t* bytes, .message = { .num_bytes = num_bytes, - .bytes = bytes, + .data = data, .num_caps = num_caps, .caps = caps, }, @@ -166,19 +166,19 @@ z_err_t ZPortCreate(z_cap_t* port_cap) { return ret; } -z_err_t ZPortSend(z_cap_t port_cap, uint64_t num_bytes, const uint8_t* bytes, +z_err_t ZPortSend(z_cap_t port_cap, uint64_t num_bytes, const void* data, uint64_t num_caps, z_cap_t* caps) { ZPortSendReq req{.port_cap = port_cap, .message = { .num_bytes = num_bytes, - .bytes = const_cast(bytes), + .data = const_cast(data), .num_caps = num_caps, .caps = caps, }}; return SysCall1(Z_PORT_SEND, &req); } -z_err_t ZPortRecv(z_cap_t port_cap, uint64_t num_bytes, uint8_t* bytes, +z_err_t ZPortRecv(z_cap_t port_cap, uint64_t num_bytes, void* data, uint64_t num_caps, z_cap_t* caps, uint64_t* actual_bytes, uint64_t* actual_caps) { ZPortRecvReq req{ @@ -186,7 +186,7 @@ z_err_t ZPortRecv(z_cap_t port_cap, uint64_t num_bytes, uint8_t* bytes, .message = { .num_bytes = num_bytes, - .bytes = bytes, + .data = data, .num_caps = num_caps, .caps = caps, }, @@ -197,7 +197,7 @@ z_err_t ZPortRecv(z_cap_t port_cap, uint64_t num_bytes, uint8_t* bytes, return ret; } -z_err_t ZPortPoll(z_cap_t port_cap, uint64_t num_bytes, uint8_t* bytes, +z_err_t ZPortPoll(z_cap_t port_cap, uint64_t num_bytes, void* data, uint64_t num_caps, z_cap_t* caps, uint64_t* actual_bytes, uint64_t* actual_caps) { ZPortRecvReq req{ @@ -205,7 +205,7 @@ z_err_t ZPortPoll(z_cap_t port_cap, uint64_t num_bytes, uint8_t* bytes, .message = { .num_bytes = num_bytes, - .bytes = bytes, + .data = data, .num_caps = num_caps, .caps = caps, }, diff --git a/zion/usr/zcall_internal.h b/zion/usr/zcall_internal.h index 105bbb3..556a0db 100644 --- a/zion/usr/zcall_internal.h +++ b/zion/usr/zcall_internal.h @@ -70,7 +70,7 @@ struct ZChannelCreateResp { struct ZMessage { uint64_t num_bytes; - uint8_t* bytes; + void* data; uint64_t num_caps; z_cap_t* caps;