Thought I might amuse myself by creating a devlopment timeline for OZONE. This is being done retrospectively as of today, Feb 11, 2002. I am doing this by looking back at old versions of my source files.
The things listed here are when a particular element was started. There are always continual bug fixes of old stuff going on. Nothing is ever finished, except the bootblock!
The earliest source files I have are dated March 1997. They are for threads, physical memory, processes, system-global data and sections. Here it sits for a year-and-a-half.
Create AST's, a boot routine, the device/IO objects, event flags, handles, kernel memory malloc (linked list), and printk. Get this all running as a program under VMS.
Create 486 boot block, floppy driver, kernel console driver, logical names, lowipl (gets from high-ipl back to lowipl), dummy security objects, system pagetable entry manager, startup routine (orignally contained what is now the console diag stuff), secondary loader, beginning of system service calls. Start disk filesystem driver.
Assembler routines common to loader and kernel moved to common source file. Created timer driver, main kernel module, start c-runtime library routines, create OZONE image loader, create logical name objects, finish writing loader. Create IDE disk driver.
Create C-runtime-like I/O calls, user-mode malloc and Unix-like signal handlers. Create spawn syscall, write elf-to-ozone image converter.
Create User, Job and Quota objects. Create 'logon' executable.
Create OZ_CLI (shell), create user-mode I/O and logical name system calls. Create generic xprintf routine and user-mode copy command executable.
Create disk partition driver, Realtek 8139 driver. Create console diag module. Create user-mode callable user/job/process/thread syscalls. Create dir, initvol, mountvol command-line utilities.
Create IP stack driver and IP command line utility
Create Dec Tulip driver (gave up on Realtek), create kernel debugger, condition handlers and instruction disassembler routine. Also create Telnet client.
Create console driver along with VGA and pseudo-terminal drivers. Create Telnet daemon.
Create stdio replacement, ramdisk driver, generic xscanf routine. Create dismount command line utility. Replace linked-list malloc with boundary-tag.
Create IP-FS filesystem driver. Create 'create directory' command line utility.
nothing
Created pipe driver, user-mode debugger
Created mutex driver, disk cache routines, 'make' command line utility. Port GLIBC, GCC, LD, AR, GAS, AS86, LD86 to run under OZONE.
Created PS/2 mouse driver, split 486 console driver into separate keyboard and video modules. Wrote shutdown command line utility.
Split out cache routines from disk cache so they can be used to cache DNS entries. Started on BSD-style network routines.
Created LSI Logic SCSI driver
Unify OZONE Make and Linux Make. Create SCSI Disk class driver. Create crash dump file routines. Create 'cat', 'dd', 'dump', 'make', 'scsi' command line utilities. Create FTP daemon. Create EDT.
Create partition boot block. Create ethernet loopback driver. Create 'write boot-block' command line utility.
Create 'binned' malloc routine (replaced boundary-tag method). Create a 'become user' routine for servers to assume identity of a given user. Create password checking routines. Create kernel profiling utility.
Create DNS lookup driver, create 'top' command line utility.
Try to create i82558 driver from Linux. Create 'fork' routine. Create 'delete' command line utility.
Split SMP routines into their own module and create uniprocessor equivalents
nothing (good God ya'll!)
nothing new, bug fixes
PIIX4 IDE driver, use PCI BIOS to scan PCI bus for devices
nothing new, bug fixes
nothing new, bug fixes
Split disk filesystem driver into FS-independent and -dependent sections
Finish kernel extension image loading. Start porting UDI.
Port StorageCenter backup software and deploy at nii.net. Write oz_stego driver.
Implement per-process data for kernel and put image header stuff in it. Implement paged pool. Implement memoury colouring.
Make a bootable CDROM.
Fix crash dumps. Fix Realtek 8139 driver (thanks to Tim Robinson).
Develop EMMY emulator. I did this mostly to teach myself C++ but then it took on a life of its own.
Develop usermode source/symbolic debugger utility. It is very GDB-like except for one aspect. It takes about 80K instead of well over 1.5Meg. Granted, it only does ELF-format x86 executables, but what do you want from something that's about 1/20th the size?
Port to run under XEN virtual machine system from University of Cambridge