[zion] Declare z_cap_t and start replacing existing types

This commit is contained in:
Drew Galbraith 2023-06-17 01:53:19 -07:00
parent 5e99dbf7d1
commit 7bd6aa42b0
4 changed files with 83 additions and 78 deletions

View File

@ -6,59 +6,59 @@
void ZProcessExit(uint64_t code);
[[nodiscard]] z_err_t ZProcessSpawn(uint64_t proc_cap, uint64_t bootstrap_cap,
uint64_t* new_proc_cap,
uint64_t* new_vmas_cap,
uint64_t* new_bootstrap_cap);
[[nodiscard]] z_err_t ZProcessSpawn(z_cap_t proc_cap, z_cap_t bootstrap_cap,
z_cap_t* new_proc_cap,
z_cap_t* new_vmas_cap,
z_cap_t* new_bootstrap_cap);
// UNUSED for now, I think we can get away with just starting a thread.
[[nodiscard]] z_err_t ZProcessStart(uint64_t proc_cap, uint64_t thread_cap,
[[nodiscard]] z_err_t ZProcessStart(z_cap_t proc_cap, z_cap_t thread_cap,
uint64_t entry, uint64_t arg1,
uint64_t arg2);
[[nodiscard]] z_err_t ZThreadCreate(uint64_t proc_cap, uint64_t* thread_cap);
[[nodiscard]] z_err_t ZThreadCreate(z_cap_t proc_cap, z_cap_t* thread_cap);
[[nodiscard]] z_err_t ZThreadStart(uint64_t thread_cap, uint64_t entry,
[[nodiscard]] z_err_t ZThreadStart(z_cap_t thread_cap, uint64_t entry,
uint64_t arg1, uint64_t arg2);
void ZThreadExit();
[[nodiscard]] z_err_t ZAddressSpaceMap(uint64_t vmas_cap, uint64_t vmas_offset,
uint64_t vmmo_cap, uint64_t* vaddr);
[[nodiscard]] z_err_t ZMemoryObjectCreate(uint64_t size, uint64_t* vmmo_cap);
[[nodiscard]] z_err_t ZAddressSpaceMap(z_cap_t vmas_cap, uint64_t vmas_offset,
z_cap_t vmmo_cap, uint64_t* vaddr);
[[nodiscard]] z_err_t ZMemoryObjectCreate(uint64_t size, z_cap_t* vmmo_cap);
[[nodiscard]] z_err_t ZMemoryObjectCreatePhysical(uint64_t paddr, uint64_t size,
uint64_t* vmmo_cap);
z_cap_t* vmmo_cap);
[[nodiscard]] z_err_t ZMemoryObjectCreateContiguous(uint64_t size,
uint64_t* vmmo_cap,
z_cap_t* vmmo_cap,
uint64_t* paddr);
[[nodiscard]] z_err_t ZTempPcieConfigObjectCreate(uint64_t* vmmo_cap,
[[nodiscard]] z_err_t ZTempPcieConfigObjectCreate(z_cap_t* vmmo_cap,
uint64_t* vmmo_size);
[[nodiscard]] z_err_t ZChannelCreate(uint64_t* channel1, uint64_t* channel2);
[[nodiscard]] z_err_t ZChannelSend(uint64_t chan_cap, uint64_t type,
[[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 type,
uint64_t num_bytes, const uint8_t* bytes,
uint64_t num_caps, const uint64_t* caps);
[[nodiscard]] z_err_t ZChannelRecv(uint64_t chan_cap, uint64_t num_bytes,
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,
uint64_t* caps, uint64_t* type,
z_cap_t* caps, uint64_t* type,
uint64_t* actual_bytes,
uint64_t* actual_caps);
[[nodiscard]] z_err_t ZPortCreate(uint64_t* port_cap);
[[nodiscard]] z_err_t ZPortSend(uint64_t port_cap, uint64_t num_bytes,
[[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,
uint64_t* caps);
[[nodiscard]] z_err_t ZPortRecv(uint64_t port_cap, uint64_t num_bytes,
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,
uint64_t* caps, uint64_t* type,
z_cap_t* caps, uint64_t* type,
uint64_t* actual_bytes, uint64_t* actual_caps);
[[nodiscard]] z_err_t ZPortPoll(uint64_t port_cap, uint64_t num_bytes,
[[nodiscard]] z_err_t ZPortPoll(z_cap_t port_cap, uint64_t num_bytes,
uint8_t* bytes, uint64_t num_caps,
uint64_t* caps, uint64_t* type,
z_cap_t* caps, uint64_t* type,
uint64_t* actual_bytes, uint64_t* actual_caps);
[[nodiscard]] z_err_t ZIrqRegister(uint64_t irq_num, uint64_t* port_cap);
[[nodiscard]] z_err_t ZIrqRegister(uint64_t irq_num, z_cap_t* port_cap);
[[nodiscard]] z_err_t ZCapDuplicate(uint64_t cap_in, uint64_t* cap_out);
[[nodiscard]] z_err_t ZCapDuplicate(z_cap_t cap_in, z_cap_t* cap_out);
[[nodiscard]] z_err_t ZDebug(const char* message);

View File

@ -72,6 +72,9 @@ typedef uint64_t z_err_t;
/* ------------------------------
* Capability Types
* ------------------------------*/
typedef uint64_t z_cap_t;
#define Z_INVALID 0x0
// General Capability Permissions

View File

@ -23,9 +23,9 @@ void ZProcessExit(uint64_t code) {
SysCall1(Z_PROCESS_EXIT, reinterpret_cast<void*>(code));
}
z_err_t ZProcessSpawn(uint64_t proc_cap, uint64_t bootstrap_cap,
uint64_t* new_proc_cap, uint64_t* new_vmas_cap,
uint64_t* new_bootstrap_cap) {
z_err_t ZProcessSpawn(z_cap_t proc_cap, z_cap_t bootstrap_cap,
z_cap_t* new_proc_cap, z_cap_t* new_vmas_cap,
z_cap_t* new_bootstrap_cap) {
ZProcessSpawnReq req{
.proc_cap = proc_cap,
.bootstrap_cap = bootstrap_cap,
@ -38,7 +38,7 @@ z_err_t ZProcessSpawn(uint64_t proc_cap, uint64_t bootstrap_cap,
return ret;
}
z_err_t ZThreadCreate(uint64_t proc_cap, uint64_t* thread_cap) {
z_err_t ZThreadCreate(z_cap_t proc_cap, z_cap_t* thread_cap) {
ZThreadCreateReq req{
.proc_cap = proc_cap,
};
@ -48,7 +48,7 @@ z_err_t ZThreadCreate(uint64_t proc_cap, uint64_t* thread_cap) {
return ret;
}
z_err_t ZThreadStart(uint64_t thread_cap, uint64_t entry, uint64_t arg1,
z_err_t ZThreadStart(z_cap_t thread_cap, uint64_t entry, uint64_t arg1,
uint64_t arg2) {
ZThreadStartReq req{
.thread_cap = thread_cap,
@ -61,8 +61,8 @@ z_err_t ZThreadStart(uint64_t thread_cap, uint64_t entry, uint64_t arg1,
void ZThreadExit() { SysCall0(Z_THREAD_EXIT); }
z_err_t ZAddressSpaceMap(uint64_t vmas_cap, uint64_t vmas_offset,
uint64_t vmmo_cap, uint64_t* vaddr) {
z_err_t ZAddressSpaceMap(z_cap_t vmas_cap, uint64_t vmas_offset,
z_cap_t vmmo_cap, uint64_t* vaddr) {
ZAddressSpaceMapReq req{
.vmas_cap = vmas_cap,
.vmas_offset = vmas_offset,
@ -74,7 +74,7 @@ z_err_t ZAddressSpaceMap(uint64_t vmas_cap, uint64_t vmas_offset,
return ret;
}
z_err_t ZMemoryObjectCreate(uint64_t size, uint64_t* vmmo_cap) {
z_err_t ZMemoryObjectCreate(uint64_t size, z_cap_t* vmmo_cap) {
ZMemoryObjectCreateReq req{
.size = size,
};
@ -85,7 +85,7 @@ z_err_t ZMemoryObjectCreate(uint64_t size, uint64_t* vmmo_cap) {
}
z_err_t ZMemoryObjectCreatePhysical(uint64_t paddr, uint64_t size,
uint64_t* vmmo_cap) {
z_cap_t* vmmo_cap) {
ZMemoryObjectCreatePhysicalReq req{
.paddr = paddr,
.size = size,
@ -96,7 +96,7 @@ z_err_t ZMemoryObjectCreatePhysical(uint64_t paddr, uint64_t size,
return ret;
}
z_err_t ZMemoryObjectCreateContiguous(uint64_t size, uint64_t* vmmo_cap,
z_err_t ZMemoryObjectCreateContiguous(uint64_t size, z_cap_t* vmmo_cap,
uint64_t* paddr) {
ZMemoryObjectCreatePhysicalReq req{
.paddr = 0,
@ -109,7 +109,7 @@ z_err_t ZMemoryObjectCreateContiguous(uint64_t size, uint64_t* vmmo_cap,
return ret;
}
z_err_t ZTempPcieConfigObjectCreate(uint64_t* vmmo_cap, uint64_t* vmmo_size) {
z_err_t ZTempPcieConfigObjectCreate(z_cap_t* vmmo_cap, uint64_t* vmmo_size) {
ZTempPcieConfigObjectCreateResp resp;
z_err_t ret = SysCall2(Z_TEMP_PCIE_CONFIG_OBJECT_CREATE, 0, &resp);
*vmmo_cap = resp.vmmo_cap;
@ -117,7 +117,7 @@ z_err_t ZTempPcieConfigObjectCreate(uint64_t* vmmo_cap, uint64_t* vmmo_size) {
return ret;
}
z_err_t ZChannelCreate(uint64_t* channel1, uint64_t* channel2) {
z_err_t ZChannelCreate(z_cap_t* channel1, z_cap_t* channel2) {
ZChannelCreateResp resp;
z_err_t ret = SysCall2(Z_CHANNEL_CREATE, 0, &resp);
*channel1 = resp.chan_cap1;
@ -125,9 +125,9 @@ z_err_t ZChannelCreate(uint64_t* channel1, uint64_t* channel2) {
return ret;
}
z_err_t ZChannelSend(uint64_t chan_cap, uint64_t type, uint64_t num_bytes,
z_err_t ZChannelSend(z_cap_t chan_cap, uint64_t type, uint64_t num_bytes,
const uint8_t* bytes, uint64_t num_caps,
const uint64_t* caps) {
const z_cap_t* caps) {
ZChannelSendReq req{
.chan_cap = chan_cap,
.message =
@ -136,14 +136,14 @@ z_err_t ZChannelSend(uint64_t chan_cap, uint64_t type, uint64_t num_bytes,
.num_bytes = num_bytes,
.bytes = const_cast<uint8_t*>(bytes),
.num_caps = num_caps,
.caps = const_cast<uint64_t*>(caps),
.caps = const_cast<z_cap_t*>(caps),
},
};
return SysCall1(Z_CHANNEL_SEND, &req);
}
z_err_t ZChannelRecv(uint64_t chan_cap, uint64_t num_bytes, uint8_t* bytes,
uint64_t num_caps, uint64_t* caps, uint64_t* type,
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* type,
uint64_t* actual_bytes, uint64_t* actual_caps) {
ZChannelRecvReq req{
.chan_cap = chan_cap,
@ -163,15 +163,15 @@ z_err_t ZChannelRecv(uint64_t chan_cap, uint64_t num_bytes, uint8_t* bytes,
return ret;
}
z_err_t ZPortCreate(uint64_t* port_cap) {
z_err_t ZPortCreate(z_cap_t* port_cap) {
ZPortCreateResp resp;
z_err_t ret = SysCall2(Z_PORT_CREATE, 0, &resp);
*port_cap = resp.port_cap;
return ret;
}
z_err_t ZPortSend(uint64_t port_cap, uint64_t num_bytes, const uint8_t* bytes,
uint64_t num_caps, uint64_t* caps) {
z_err_t ZPortSend(z_cap_t port_cap, uint64_t num_bytes, const uint8_t* bytes,
uint64_t num_caps, z_cap_t* caps) {
ZPortSendReq req{.port_cap = port_cap,
.message = {
.type = 0,
@ -183,8 +183,8 @@ z_err_t ZPortSend(uint64_t port_cap, uint64_t num_bytes, const uint8_t* bytes,
return SysCall1(Z_PORT_SEND, &req);
}
z_err_t ZPortRecv(uint64_t port_cap, uint64_t num_bytes, uint8_t* bytes,
uint64_t num_caps, uint64_t* caps, uint64_t* type,
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* type,
uint64_t* actual_bytes, uint64_t* actual_caps) {
ZPortRecvReq req{
.port_cap = port_cap,
@ -204,8 +204,8 @@ z_err_t ZPortRecv(uint64_t port_cap, uint64_t num_bytes, uint8_t* bytes,
return ret;
}
z_err_t ZPortPoll(uint64_t port_cap, uint64_t num_bytes, uint8_t* bytes,
uint64_t num_caps, uint64_t* caps, uint64_t* type,
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* type,
uint64_t* actual_bytes, uint64_t* actual_caps) {
ZPortRecvReq req{
.port_cap = port_cap,
@ -225,7 +225,7 @@ z_err_t ZPortPoll(uint64_t port_cap, uint64_t num_bytes, uint8_t* bytes,
return ret;
}
z_err_t ZIrqRegister(uint64_t irq_num, uint64_t* port_cap) {
z_err_t ZIrqRegister(uint64_t irq_num, z_cap_t* port_cap) {
ZIrqRegisterReq req{
.irq_num = irq_num,
};
@ -235,7 +235,7 @@ z_err_t ZIrqRegister(uint64_t irq_num, uint64_t* port_cap) {
return ret;
}
z_err_t ZCapDuplicate(uint64_t cap_in, uint64_t* cap_out) {
z_err_t ZCapDuplicate(z_cap_t cap_in, z_cap_t* cap_out) {
ZCapDuplicateReq req{
.cap = cap_in,
};

View File

@ -2,36 +2,38 @@
#include <stdint.h>
#include "include/ztypes.h"
struct ZProcessSpawnReq {
uint64_t proc_cap;
uint64_t bootstrap_cap;
z_cap_t proc_cap;
z_cap_t bootstrap_cap;
};
struct ZProcessSpawnResp {
uint64_t proc_cap;
uint64_t vmas_cap;
uint64_t bootstrap_cap;
z_cap_t proc_cap;
z_cap_t vmas_cap;
z_cap_t bootstrap_cap;
};
struct ZThreadCreateReq {
uint64_t proc_cap;
z_cap_t proc_cap;
};
struct ZThreadCreateResp {
uint64_t thread_cap;
z_cap_t thread_cap;
};
struct ZThreadStartReq {
uint64_t thread_cap;
z_cap_t thread_cap;
uint64_t entry;
uint64_t arg1;
uint64_t arg2;
};
struct ZAddressSpaceMapReq {
uint64_t vmas_cap;
uint64_t vmas_offset;
uint64_t vmmo_cap;
z_cap_t vmas_cap;
z_cap_t vmas_offset;
z_cap_t vmmo_cap;
};
struct ZAddressSpaceMapResp {
@ -43,7 +45,7 @@ struct ZMemoryObjectCreateReq {
};
struct ZMemoryObjectCreateResp {
uint64_t vmmo_cap;
z_cap_t vmmo_cap;
};
struct ZMemoryObjectCreatePhysicalReq {
@ -52,18 +54,18 @@ struct ZMemoryObjectCreatePhysicalReq {
};
struct ZMemoryObjectCreatePhysicalResp {
uint64_t vmmo_cap;
z_cap_t vmmo_cap;
uint64_t paddr;
};
struct ZTempPcieConfigObjectCreateResp {
uint64_t vmmo_cap;
z_cap_t vmmo_cap;
uint64_t vmmo_size;
};
struct ZChannelCreateResp {
uint64_t chan_cap1;
uint64_t chan_cap2;
z_cap_t chan_cap1;
z_cap_t chan_cap2;
};
struct ZMessage {
@ -73,30 +75,30 @@ struct ZMessage {
uint8_t* bytes;
uint64_t num_caps;
uint64_t* caps;
z_cap_t* caps;
};
struct ZChannelSendReq {
uint64_t chan_cap;
z_cap_t chan_cap;
ZMessage message;
};
struct ZChannelRecvReq {
uint64_t chan_cap;
z_cap_t chan_cap;
ZMessage message;
};
struct ZPortCreateResp {
uint64_t port_cap;
z_cap_t port_cap;
};
struct ZPortSendReq {
uint64_t port_cap;
z_cap_t port_cap;
ZMessage message;
};
struct ZPortRecvReq {
uint64_t port_cap;
z_cap_t port_cap;
ZMessage message;
};
@ -105,13 +107,13 @@ struct ZIrqRegisterReq {
};
struct ZIrqRegisterResp {
uint64_t port_cap;
z_cap_t port_cap;
};
struct ZCapDuplicateReq {
uint64_t cap;
z_cap_t cap;
};
struct ZCapDuplicateResp {
uint64_t cap;
z_cap_t cap;
};