From bf5052fd3d7e07421832b264289b51ee187fb687 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 23 Mar 2026 18:15:38 +0000 Subject: [PATCH] meta: replace systemd and ldd with herdd and nsd --- programs/systemd/CMakeLists.txt | 10 -------- programs/systemd/main.c | 14 ----------- services/herdd/CMakeLists.txt | 10 ++++++++ services/herdd/main.c | 43 +++++++++++++++++++++++++++++++++ services/herdd/runlevel.c | 0 services/herdd/runlevel.h | 14 +++++++++++ services/herdd/service.c | 0 services/herdd/service.h | 17 +++++++++++++ services/ldd/CMakeLists.txt | 10 -------- services/nsd/CMakeLists.txt | 15 ++++++++++++ services/{ldd => nsd}/main.c | 0 services/nsd/nsd.service | 6 +++++ 12 files changed, 105 insertions(+), 34 deletions(-) delete mode 100644 programs/systemd/CMakeLists.txt delete mode 100644 programs/systemd/main.c create mode 100644 services/herdd/CMakeLists.txt create mode 100644 services/herdd/main.c create mode 100644 services/herdd/runlevel.c create mode 100644 services/herdd/runlevel.h create mode 100644 services/herdd/service.c create mode 100644 services/herdd/service.h delete mode 100644 services/ldd/CMakeLists.txt create mode 100644 services/nsd/CMakeLists.txt rename services/{ldd => nsd}/main.c (100%) create mode 100644 services/nsd/nsd.service diff --git a/programs/systemd/CMakeLists.txt b/programs/systemd/CMakeLists.txt deleted file mode 100644 index 6ccfe8a..0000000 --- a/programs/systemd/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -file(GLOB sources *.c) -add_executable(systemd ${sources}) -target_link_libraries(systemd libc libc-runtime libpthread liblaunch libmango) - -sysroot_add_program( - NAME systemd - BIN_DIR /usr/bin) -bsp_add_program( - NAME systemd - BIN_DIR /usr/bin) diff --git a/programs/systemd/main.c b/programs/systemd/main.c deleted file mode 100644 index c0e69d6..0000000 --- a/programs/systemd/main.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -int main(int argc, const char *argv[]) -{ - kern_logf("systemd"); - kern_logf("args:"); - - for (int i = 0; i < argc; i++) { - kern_logf("[%d]: %s", i, argv[i]); - } - - return 0; -} diff --git a/services/herdd/CMakeLists.txt b/services/herdd/CMakeLists.txt new file mode 100644 index 0000000..9a70d25 --- /dev/null +++ b/services/herdd/CMakeLists.txt @@ -0,0 +1,10 @@ +file(GLOB sources *.c) +add_executable(herdd ${sources}) +target_link_libraries(herdd libc libc-runtime libmango libpthread) + +sysroot_add_program( + NAME herdd + BIN_DIR /usr/bin) +bsp_add_program( + NAME herdd + BIN_DIR /usr/bin) diff --git a/services/herdd/main.c b/services/herdd/main.c new file mode 100644 index 0000000..760796f --- /dev/null +++ b/services/herdd/main.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include + +static void *thread_func(void *arg) +{ + kern_logf("started thread with arg %p", arg); + errno = 100; + return (void *)0xdeadbeef; +} + +int main(int argc, const char *argv[], const char *envp[]) +{ + kern_logf("herdd"); + kern_logf("args:"); + + for (int i = 0; i < argc; i++) { + kern_logf("[%d]: %s", i, argv[i]); + } + + kern_logf("env:"); + + for (int i = 0; envp[i]; i++) { + kern_logf("[%d]: %s", i, envp[i]); + } + + kern_logf("self = %p", pthread_self()); + errno = 200; + + pthread_t thread; + pthread_create(&thread, NULL, thread_func, (void *)0xdeafcafe); + kern_logf("started thread %p", thread); + void *ret = NULL; + pthread_join(thread, &ret); + kern_logf("thread returned %p", ret); + + kern_logf("errno..."); + kern_logf("%u", errno); + kern_logf("...errno"); + return 0; +} diff --git a/services/herdd/runlevel.c b/services/herdd/runlevel.c new file mode 100644 index 0000000..e69de29 diff --git a/services/herdd/runlevel.h b/services/herdd/runlevel.h new file mode 100644 index 0000000..0bd61ad --- /dev/null +++ b/services/herdd/runlevel.h @@ -0,0 +1,14 @@ +#ifndef RUNLEVEL_H_ +#define RUNLEVEL_H_ + +#include + +#define RUNLEVEL_DESCRIPTION_MAX 64 + +struct runlevel { + char rl_description[RUNLEVEL_DESCRIPTION_MAX]; + char **rl_requires; + size_t rl_requires_count; +}; + +#endif diff --git a/services/herdd/service.c b/services/herdd/service.c new file mode 100644 index 0000000..e69de29 diff --git a/services/herdd/service.h b/services/herdd/service.h new file mode 100644 index 0000000..a05dba0 --- /dev/null +++ b/services/herdd/service.h @@ -0,0 +1,17 @@ +#ifndef SERVICE_H_ +#define SERVICE_H_ + +#define SVC_DESCRIPTION_MAX 64 + +enum service_role { + SVC_ROLE_NONE = 0x00u, + SVC_ROLE_NAMESPACE_PROVIDER = 0x01u, +}; + +struct service { + char s_description[SVC_DESCRIPTION_MAX]; + enum service_role s_roles; + char *s_exec; +}; + +#endif diff --git a/services/ldd/CMakeLists.txt b/services/ldd/CMakeLists.txt deleted file mode 100644 index 2e70c03..0000000 --- a/services/ldd/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -file(GLOB sources *.c) -add_executable(ldd ${sources}) -target_link_libraries(ldd libc-core libc-runtime libmango) - -sysroot_add_program( - NAME ldd - BIN_DIR /usr/bin) -bsp_add_program( - NAME ldd - BIN_DIR /usr/bin) diff --git a/services/nsd/CMakeLists.txt b/services/nsd/CMakeLists.txt new file mode 100644 index 0000000..694f270 --- /dev/null +++ b/services/nsd/CMakeLists.txt @@ -0,0 +1,15 @@ +file(GLOB sources *.c) +rosetta_add_service( + NAME nsd + SOURCES ${sources} + CFG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/nsd.service) +target_link_libraries(nsd libc libc-runtime) + +sysroot_add_service( + NAME nsd + BIN_DIR /usr/bin + SVC_DIR /etc/herdd/services) +bsp_add_service( + NAME nsd + BIN_DIR /usr/bin + SVC_DIR /etc/herdd/services) diff --git a/services/ldd/main.c b/services/nsd/main.c similarity index 100% rename from services/ldd/main.c rename to services/nsd/main.c diff --git a/services/nsd/nsd.service b/services/nsd/nsd.service new file mode 100644 index 0000000..69dd6a1 --- /dev/null +++ b/services/nsd/nsd.service @@ -0,0 +1,6 @@ +[Unit] +Description=Namespace Service + +[Service] +Exec=/usr/bin/nsd +Role=NamespaceProvider