#1 bi-weekly progress report

Published: Mon 21 October 2019

Good news everyone, we start posting weekly updates on Mimiker kernel development. Read below what our team has coded recently!

ioctl syscall

As NetBSD manpage says

The ioctl() function manipulates the underlying device parameters of special files. In particular, many operating characteristics of character special files (e.g. terminals) may be controlled with ioctl() requests.

And that’s precisely the reason we need ioctl. Mimiker terminal handling capabilities are very limited. We need a line discipline to be implemented to support basic line editing and translating keystrokes to signals like SIGINT and SIGTSTP.

NetBSD libc port

No OS kernel itself poses any value to end users. Therefore an extensive effort is being put to run useful stuff on top of Mimiker kernel. We already have some success stories here, like running Doom (no interaction yet, though) and Lua language interpreter, but more elementary command line tools are needed. Our latest codebase brings a partial port of libc and libm from NetBSD. Just enough to run plenty of basic Unix tools like: cat, find, head, grep, kill, sed, tail, wc, and finally the Korn Shell ksh. We hope to make those tools part of Mimiker OS this semester!

system call framework cleanup

Things stop working from time to time. That wouldn’t happen if we had more time to implement tests. Anyway, earlier changes to system call framework introduced bugs to getdirentries and execve syscalls, thus making ls command and lua interpreter crash. (fixed by jpsz)

non-local jumps: missing pieces

Standard C library functions setjmp and longjmp use sigprocmask and sigaltstack. However those calls were not implemented making lua and ksh crash. (fixed by jpsz)