From 0183790af35b9e46a1a16d2ac79383b88c8862d1 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 23 Feb 2026 21:57:46 +0000 Subject: [PATCH] ld: send fs.open() message to bootstrap --- sys/ld/CMakeLists.txt | 2 +- sys/ld/main.c | 25 +++++++++++++------------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/sys/ld/CMakeLists.txt b/sys/ld/CMakeLists.txt index a51a7ce..685b4e7 100644 --- a/sys/ld/CMakeLists.txt +++ b/sys/ld/CMakeLists.txt @@ -9,7 +9,7 @@ set_target_properties(ld PROPERTIES OUTPUT_NAME "ld64" SUFFIX ".so") -target_link_libraries(ld ulibc libmango) +target_link_libraries(ld ulibc libmango libmsg-fs) target_compile_options(ld PRIVATE -fPIC -fno-stack-protector -nostdlib -ffreestanding) diff --git a/sys/ld/main.c b/sys/ld/main.c index 747f339..f40d99c 100644 --- a/sys/ld/main.c +++ b/sys/ld/main.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -35,21 +36,21 @@ int main( #if 1 port_connect(port, 0, 0); - const char msg_buf[] = "Hello!"; - struct iovec vec = IOVEC(msg_buf, 7); - struct msg msg = MSG(&vec, 1, NULL, 0); + const char *path = "/usr/lib/libc.so"; + int flags = 4; + int err = 0; - char recv_buf[64]; - struct iovec recv_vec = IOVEC(recv_buf, sizeof recv_buf); - struct msg recv_msg = MSG(&recv_vec, 1, NULL, 0); + kern_logf("calling open(%s, %d)", path, flags); + status = rosetta_msg_fs_open_send(port, path, flags, &err); - kern_logf("sending message..."); - status = msg_send(port, 0, &msg, &recv_msg); - kern_logf("msg_send: %d", status); - - if (status == KERN_OK) { - kern_logf("reply: %s", recv_buf); + if (status != KERN_OK) { + kern_logf("open call failed (status %d)", status); + } else if (err != 0) { + kern_logf("open call returned error %d", err); + } else { + kern_logf("open call succeeded"); } + #endif return 0; }