6export module zxfoundation.sys.service.core;
7import zxfoundation.base.types;
8import zxfoundation.scoms.kobject.base;
9import zxfoundation.memory.objects;
10import zxfoundation.dgp.cap.types;
16namespace zxfoundation::sys::service {
19 constexpr u32 MAX_SERVICES = 64;
22 constexpr u32 SERVICE_NAME_MAX_LEN = 64;
25 struct service_entry {
26 scoms::kobject::bobject ko{};
27 char name[SERVICE_NAME_MAX_LEN]{};
28 dgp::cap::cap_token token{};
29 memory::objects::memory_object_ref authority{};
31 service_entry()
noexcept =
default;
33 assert_offset(service_entry, ko, 0);
36 auto init()
noexcept ->
void;
39 auto destroy_for_domain(u32 domain_id)
noexcept ->
void;
41 auto register_service_cap_lookup()
noexcept ->
void;
48 [[nodiscard]]
auto register_service(
49 std::string_view name,
50 dgp::cap::cap_token token,
52 )
noexcept -> std::expected<u32, lib::kernel_error>;
59 [[nodiscard]]
auto lookup_service(
60 std::string_view name,
62 )
noexcept -> std::expected<dgp::cap::cap_token, lib::kernel_error>;
68 [[nodiscard]]
auto unregister_service(
71 )
noexcept -> std::expected<
void, lib::kernel_error>;
74 [[nodiscard]]
auto service_count()
noexcept -> u32;