Skip to content

Latest commit

 

History

History
145 lines (135 loc) · 4.88 KB

TODO

File metadata and controls

145 lines (135 loc) · 4.88 KB

ChickenOS TODO

Core

-Improve quality of comments and commit messages -Need to implement synchronization primitives - In Progress -Can use gcc/clang provided test and set primitives -Add proper Virtual address management - In Progress -Add copy on write -Memory mapped files -Build a testing infrastructure -probably start with fs first (well defined i/o API) -some parts will have to be built in -maybe scriptable w/ Lua? -Use tables of function pointers for device drivers, tests and other things http://linuxgazette.net/157/amurray.html -Port to ARM -Requires major refactoring and restructuring of the build process -need to be able to easily change PHYS_BASE (3GB for i386, 2GB for arm32) -paging info: http://www.cs.rutgers.edu/~pxk/416/notes/09a-paging.html http://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/arch/arm/include/arm32/pte.h -General fix of build process -Restructure some things to use weak functions: -http://www.valvers.com/programming/c/gcc-weak-function-attributes

Console

-Modify the kernel's printf to output info separately from tty0 -printf -> stderr probably -kprintf -> fb console, serial -TTY support is crap, is tied into VGA text mode -Good references -https://blog.nelhage.com/2009/12/a-brief-introduction-to-termios-termios3-and-stty/ -Improve keyboard support -Actually queue keycodes -Implement line disciplines (raw and cooked mode) - In Progress -Proper blocking I/O - In Progress -Take stb_ttf and write a small app that takes a TTF font and generates either a bitmap or a c header -Proper serial support, separate back end from character i/o - Done? -necesary for ARM

Threads

-Implement passing open files to child threads - Done -Implement wait queue -May have to change/rewrite the scheduler -Start factoring out platform specific code -Thread setup, fork, syscall_handler, and exec/load_elf are the main ones left -TLS: http://www.airs.com/blog/archives/44

Userspace

-Get dash working properly -Worked for a bit, either signals, waiting, or both are fragile -Port coreutils or busybox -Done -Port binutils/gcc/nasm -Have nasm and gcc binaries -Port vim -Running, input is broken -Port links/lynx -Implement dynamic loading of libraries -Just have to implement stuff for the musl ldso to work

Syscalls

-poll() -select() -termios stuff -various fs calls -GCC: wait4 - in progress read - done write - done open - done close - done stat - done fstat - done lstat - done lseek - done mmap - in progress mprotect munmap brk - done rt_sigaction - in progress ioctl - in progress? access - done? dup2 getpid - done vfork - sorta done, fork works, execve - done, could use improving fcntl unlink - in progress readlink - in progress chmod - in progress umask getrlimit getrusage arch_prctl setrlimit

Network

-Rewrite in progress -Implement local sockets -Try to figure out why we crash Virtualbox (and the host system) using the AM7990 driver -Add NE9000 driver -Add Intel 2200BG WiFi driver (can probably port iwi from openbsd or linux) (if I do this, abstract out all system specific calls, so other osdev people can use the driver) and then port wpa_supplicant (trivial: http://hostap.epitest.fi/wpa_supplicant/devel/porting.html) -Use dropbear for remote access

Filesystem

-Implement ext2 write support - actually done, just needs new/extensible file/directory support -in progress -Implement fat12/16/32 support - in progress -Need to add support for select() -Maybe implement ISO9660 support for reading CDs -Add a block cache (can likely use pintos code for reference) -in progress -Continue work on the network filesystem, and maybe add NFS support -Compartmentalize VFS, filesystems, block cache, and disk i/o from each other

Sound

-Implement Soundblaster 16 support -AC97 support may not be that hard to implement -Goal is to be able to listen to one thing at a time

Video

-Somehow get VBE/VESA to work so we can have something better than a simple 80 column terminal (partially done) -Get linear framebuffer to work so we can do video (partially done) -get X11 working (EXTREMELY AMBITIOUS?) -port SDL (has been done by other hobbiest OSes)

vim: set syntax=markdown: