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 withioctl()
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)