Commit Diff


commit - b8d611242cec2588168e3fc461c196f1a722bbfb
commit + 68d2febf4860768d02aaa134cfcac0fa3ee35508
blob - 7c0ac70927c6f8ba0d6a8e3274de06e8d210fc9a
blob + 8cbed6759e558db8c894ae3f26f3718a3b539ee1
--- GNUmakefile
+++ GNUmakefile
@@ -669,7 +669,7 @@ endif
 
 ifeq ($(ARCH),arm64)
 run-arm64: legacy
-	qemu-system-aarch64 -machine virt -cpu cortex-a72 -m 2048M -smp 2 \
+	qemu-system-aarch64 -machine virt -cpu cortex-a72 -m 2048M -smp cores=2,threads=2,sockets=2 \
 	  -kernel $(ARCH_DIR)/kernel.elf \
 	  -serial stdio -monitor none -nographic
 else
blob - dd3a9209ec3935ae87f7fff04a1b7f838bbca7bb
blob + 1afbf3d8b959e3ac9acb64c0114e713eb8bdd530
--- README.md
+++ README.md
@@ -6,7 +6,7 @@ A WIP POSIX-compliant microkernel and Unix-like operat
 
 Lenix targets a secure, efficient, enterprise-grade footprint that can scale from single-board computers to virtualized deployments (QEMU/KVM, OpenBSD VMM, and Bhyve). The initial bring-up focuses on x86_64 and arm64/aarch64 with planned RISC-V64 support once the core subsystems mature. Symmetric multiprocessing and distributed capabilities are in scope from the outset so the system can span multi-core boards and clustered environments.
 
-The kernel follows a microkernel architecture inspired by Minix, GNU/Hurd, Mach, OpenBSD, IRIX, OpenVMS, Sortix, and Plan 9, emphasizing clear privilege boundaries, message-passing services, and network-transparent interfaces.
+The kernel follows a microkernel architecture inspired by Minix, GNU/Hurd, Mach,as well as OpenBSD, IRIX, OpenVMS, and Plan 9 - emphasizing clear privilege boundaries, message-passing services, and network-transparent interfaces.
 
 Because IPC is the lifeblood of any microkernel, Lenix will grow a first-class message-passing framework that lets user-mode servers exchange capabilities, share memory safely, and marshal POSIX-style requests without collapsing isolation guarantees. Every subsystem we add (drivers, filesystems, network stacks) is expected to live behind that IPC surface so scaling out to distributed deployments remains straightforward.
 
@@ -20,17 +20,14 @@ We will begin with tarfs+tmpfs support, then ext2, the
 
 We will use musl or another modern, POSIX-complient libc implementation (or, preferably, our own implementation).
 
-All code is written following OpenBSD's style(9).
-
 Some of the following documentation may be outdated - check changelog.md and roadmap.md for a better idea of the current state of the microkernel.
 
 ## Known major issues and blockers
 
 - IPC/VFS timing (or something else!) can cause intermittent boot problems.
-- Early console and TTY needs more work, sometimes there is corruption and output of what looks like other parts of memory.
-- Slow operations in shell - delays spawning and intermittent hangs
+- Intermittent hangs
 - arm64 support is lagging behind
-- Entire codebase needs refined and possibly restructured.
+- SMP needs work
 
 ## Toolchain
 
@@ -100,7 +97,7 @@ Rebuild images with musl staged: `gmake rootfs` and/or
 
 ```bash
 # x86_64 legacy + UEFI artifacts:
-make clean && make ARCH=x86_64 -j4 && make package-apps && make package-apps && make initrd && make efi && make iso
+make clean && make ARCH=x86_64 -j4 && make package-runtime && make package-apps && make initrd && make efi && make iso
 
 # ARM64 (QEMU virt) legacy kernel:
 ARCH=arm64 make legacy
blob - 2f2f632d5eb6672d60d600fd52b401c2f15ef189
blob + 94a71cb4192b0332491461bbad0974cda84e4b50
--- kernel/console/service.c
+++ kernel/console/service.c
@@ -740,6 +740,13 @@ console_task_main(void *arg)
 			sched_yield();
 			continue;
 		}
+		if (entry.len > CONSOLE_LINE_MAX) {
+			entry.len = CONSOLE_LINE_MAX;
+			entry.buf[CONSOLE_LINE_MAX - 1] = '\0';
+		} else {
+			if (entry.len == 0 || entry.buf[entry.len] != '\0')
+				entry.buf[(entry.len < CONSOLE_LINE_MAX) ? entry.len : (CONSOLE_LINE_MAX - 1)] = '\0';
+		}
 		console_process_line(entry.buf);
 	}
 }
@@ -1007,7 +1014,7 @@ console_service_register_ttyctl(struct sched_task *tas
 	 * early_console_write() will continue to buffer messages to the ring
 	 * buffer for audit/diagnostics, but won't write to serial.
 	 * PTY master output (console_master_write) becomes the only path to serial. */
-	//reearly_console_disable_serial_write();
+	//early_console_disable_serial_write();
 	 #ifdef LENIX_DEBUG
 	serial_write("[console] early console serial writes disabled\n", 48);
 	#endif