Skip to content

Things on the TODO List

EtchedPixels edited this page Dec 26, 2014 · 11 revisions

Known Performance Easy Wins

  • Instead of switching per process istacks use a single istack and patch the return path (saves 256 bytes/process)
  • Optimised usermem copiers, at least for the usual "yes both ends in the same page" case
  • Read pages direct to user memory on execve()
  • Replace the compressor in single user mode with one in asm
  • Support vfork()

The TODO List

  • Much debugging
  • Stabilize libc
  • Make fcc a useful tool for wrapping sdcc
  • Relocatable binary format
  • Relocatable binary format with stack low and data above (so brk can expand memory without chmem hacks), as in ELKS
  • "Shared" library support and maybe RLE compressed binaries. Shared in the sense of disk saving not memory
  • bogomips 8)
  • Report CPU type (Z80/Z180/T80 etc)
  • Finish SYS5 signal interfaces (SIGSTOP handling, SIGCHLD etc)
  • Finish post 2038 support (rework superblock bias field and propogate into inodes)
  • Implement full /dev/tty
  • UZIX has a clever space saving merge of chown/chmod
  • UZIX symbolic links
  • UZIX setprio versus FUZIX nice
  • 8086 Support
  • UZIX per process versus global trace flag
  • Finish profil
  • Bankable kernel images (needs SDCC support, or some work on gcc-m6809). Having 2 or 3 x 16K ROM image bankable kernels would be a huge help on Amstrad CPC and Sinclair Spectrum
  • Can we split the kernel into resident/non-resident (odder syscalls) and pull the UZI disk swap trick for kernel and user app chunks onto disk to run in 32K/32K - or would this just get too silly
  • Missing for System 3 equivalence: ulimit, ptrace
  • Check for a swap signature before swapping ?
  • Root reserved blocks/inodes on disk
  • 2.11BSD optimisations for blk_alloc/free and i_alloc_free
  • Sort on read in/write out for block tables
  • Sticky bits
  • Does the OMU function pointer based open/create/mk* approach save memory versus UZI style ?
  • UMZIX has a neat "make anything" function unifying a lot of the creation logic
  • Missing from System 5 equivalence (ignoring streams and sys5 ipc) fpathconf(), fstatfs(), getdents (internal)(), getgroups, pathconf(), plock, poll, setgroups, setpgid, setsid, sigaction, sigold, sigignore sigpause, sigpending, sigprocmask, sigrelse, sigset, sigsuspend statfs, sysconf, sysfs, sysi86, uadmin(swapctl etc), ustat(obsolete). what can we do in userspace - quite a lot looks puntable given just an fs type field back from kernel (* = userspace via helper)
  • Select/poll
  • TCP/IP
  • Core dumps
  • Add a stack overflow sentinel and kill
  • flock ???
  • BSD process groups could be added (want to kick out interrupt stacks first)
  • Bankable userspace processes ?
  • Support for an out of kernel space secondary cache (as in ELKS - eg to use C128 RBU space to back fd)