Skip to content

MerlionOS v100.4 — Full Userspace: exec, sockets, syscall returns

Choose a tag to compare

@lai3d lai3d released this 18 Mar 13:14
· 29 commits to main since this release

MerlionOS v100.4 — Full Userspace U1-U4

Stats

  • 140,204 lines of Rust
  • ~380 modules, 7 built-in user programs
  • 45 syscalls with proper return values
  • 0 errors, 0 warnings

Userspace Complete (U1-U4)

U1: Ring 3 Execution ✅

  • ELF loader maps user code at 0x400000
  • iretq switches Ring 0 → Ring 3
  • int 0x80 syscall returns Ring 3 → Ring 0
  • [user] Hello from MerlionOS userspace!

U2: Syscall Return Values ✅

  • All 45 syscalls set rax via trampoline
  • open returns fd, read returns bytes, getpid returns pid
  • -1 on failure, proper error semantics

U3: exec ✅

  • SYS_EXEC loads and runs a new program
  • exec-test → exec("hello") → Hello World chain
  • Old process cleaned up on exec

U4: Socket Syscalls ✅

  • SYS_SOCKET, SYS_CONNECT, SYS_SENDTO, SYS_RECVFROM
  • connect() uses real TCP stack (tcp_real::connect)
  • Foundation for userspace networking

7 Built-in User Programs

  • hello, cat-test, qfc-test, counter, getpid, syscall-test, open-test, exec-test

Build

make build && make run
merlion> run-user hello
[user] Hello from MerlionOS userspace!
merlion> run-user exec-test
merlion> run-user syscall-test

Born for AI. Built by AI. Runs user programs. 🦁