Today I started rewriting the code for scheduling and process
initialization (via fork() or load_from_disk()).
The new code uses the fact that all handler functions (which
includes system call handlers) can read the register contents
of the process in user mode (before the interrupt occurred or
the system call was initiated with int 0x80).
Also new in Ulix: I can now access a floppy drive. Reading and
writing sectors works fine in both system mode (during the
OS initialization) and in user mode (through sys calls). For
testing stuff, there's also a rudimentary FAT-like filesystem
(including a makefs command that creates new floppy
images and fills them with files, a bit like genisoimage).
Since so many things depend on one another, there's also a
usermode library (ulixlib) which allows Ulix programs to be
(cross-) compiled with gcc. So it is now possible
to write C programs that open() a file on the
floppy disk and then read() from and write()
[ Path: | persistent link ]