Skip to content

Commit 549e748

Browse files
committed
wip
1 parent 61e3778 commit 549e748

File tree

8 files changed

+25
-84
lines changed

8 files changed

+25
-84
lines changed

src/apps/hideo-shell/cursor.path

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"M13.1 14.9 1.4 3.1 1.4 20 5 16.2 8.3 23.8 11 22.6 7.7 15Z"

src/libs/karm-async/async.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,11 @@ Res<> Loop::run() {
119119
if (_sources.len() == 0)
120120
return Ok();
121121

122-
if (_ret)
122+
if (_ret) {
123+
auto ret = *_ret;
124+
_ret = NONE;
123125
return *_ret;
126+
}
124127

125128
try$(wait(until));
126129
}

src/libs/karm-ipc/ipc.h

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22

3-
#include <karm-async/funcs.h>
3+
#include <karm-base/func.h>
44
#include <karm-main/base.h>
55
#include <karm-sys/url.h>
66

@@ -25,8 +25,17 @@ struct Invoker<MID, Ret(Args...)> {
2525
};
2626

2727
struct Transport {
28-
template <typename I, u64 MID, typename F, typename... Args>
29-
Meta::Ret<F> invoke(Args... args) {
28+
template <typename IFace, auto *NAME, auto UID, typename F>
29+
struct Method {
30+
using _IFace = IFace;
31+
static constexpr auto _NAME = NAME;
32+
static constexpr auto _UID = UID;
33+
using _Func = F;
34+
using _Ret = Meta::Ret<F>;
35+
};
36+
37+
template <typename Method, typename... Args>
38+
Meta::Ret<typename Method::_Ret, Args...> invoke(Args &&...args) {
3039
Invoker<MID, F> invoker;
3140
}
3241
};
@@ -49,7 +58,7 @@ static inline Async::Task<Res<Strong<I>>> open(Sys::Url) {
4958
using Srv = Func<AsyncRes<Strong<Object>>(Ctx &ctx)>;
5059

5160
static inline AsyncRes<> runSrv(Ctx &, Srv srv) {
52-
co_return Async::run();
61+
co_return Async::loop().run();
5362
}
5463

5564
} // namespace Karm::Ipc

src/libs/karm-meta/callable.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ using Ret = decltype(Meta::declval<U>()(std::forward<Args>(Meta::declval<Args>()
2727

2828
template <typename T, typename... Args>
2929
concept Callable = requires(T f) {
30-
f(declval<Args>()...);
31-
};
30+
f(declval<Args>()...);
31+
};
3232

3333
} // namespace Karm::Meta

src/srvs/grund-echo/api.h

-45
This file was deleted.

src/srvs/grund-echo/api.idl

-7
This file was deleted.

src/srvs/grund-echo/main.cpp

-14
This file was deleted.

src/srvs/grund-system/main.cpp

+5-11
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@ Res<> loadService(Ctx &ctx, Sys::Url url) {
1212
auto &handover = useHandover(ctx);
1313
auto urlStr = try$(url.str());
1414
auto *elf = handover.fileByName(urlStr.buf());
15-
if (not elf) {
16-
logError("system: service '{}' not found", url);
17-
return Error::invalidFilename();
18-
}
15+
if (not elf)
16+
return Error::invalidFilename("service not found");
1917

2018
logInfo("system: mapping elf...");
2119
auto elfVmo = try$(Hj::Vmo::create(Hj::ROOT, elf->start, elf->size, Hj::VmoFlags::DMA));
@@ -27,17 +25,13 @@ Res<> loadService(Ctx &ctx, Sys::Url url) {
2725

2826
logInfo("system: validating elf...");
2927
Elf::Image image{elfRange.bytes()};
30-
if (not image.valid()) {
31-
logError("Invalid elf");
32-
return Error::invalidInput();
33-
}
28+
if (not image.valid())
29+
return Error::invalidInput("Invalid elf");
3430

3531
logInfo("system: mapping the elf...");
36-
3732
for (auto prog : image.programs()) {
38-
if (prog.type() != Elf::Program::LOAD) {
33+
if (prog.type() != Elf::Program::LOAD)
3934
continue;
40-
}
4135

4236
usize size = alignUp(max(prog.memsz(), prog.filez()), Hal::PAGE_SIZE);
4337
logInfo("system: mapping section: {x}-{x}", prog.vaddr(), prog.vaddr() + size);

0 commit comments

Comments
 (0)