* Network, Disk
### SMART capabilities
-* Add to natacontrol (see NetBSD's atactl?)
* Add to camcontrol
+* Add to natacontrol (see NetBSD's atactl?)
### Disk scheduling rc scripts (GCI:Code)
* Create a rc script to manage the disk/io scheduling system
* HAMMER has the capability to expose very rich information to userland through ioctl's.
* Currently the hammer(8) utility makes use of this information in an ad-hoc manner.
* Port this core functionality into a public libhammer library so that other base and third party utilities may take advantage of it.
+* See commit: cb7575e6a89409a2041a37fcfc22ce9e41297ab8 -- libHAMMER already exists, port functionality into it!
+
+### Clean up crypt(3) consumers
+* crypt(3) can legitimately return NULL on error, but many consumers do not check for this, instead passing the return directly to str[n]cmp. Fix these cases.
+* Fix these cases in pkgsrc as well.
## Kernel projects
* A pluggable kernel I/O scheduler already exists
* Implement additional disk scheduling policies
+### Implement boot cache
+* Effectively a smart readahead.
+* Store the pattern of incoming read requests of the boot disk. (Likely into an array structure for better linear readback, We mmap() the whole thing into RAM on boot.)
+* Sort pattern into a playback list. (Burstsort or a simple quick sort to get things going?)
+* Provide feedback of boot cache playback list hit rate for better adaptiveness.
+
### Improve kernel boot speed
* Research source of delays in boot process, keyboard init, scsi?
* Better thread some hardware init, for example USB?
* Clear out free objcache slabs under memory pressure.
* Add reclaim functionality to objcache, such that it may ask consumers to free objects back into it under memory pressure.
+### Tear out serializers
+* Serializers could be _carefully_ replaced with MTX locks
+
+### Tear out condvars
+* Conditional vars -- condvar(9), could be replaced with other locking primitives and our tsleep/wakeup interlock.
+
+### Make karc4random in libkern per-cpu
+* Verify that it is possible and safe to do this, what care would need to be taken, especially with respect to the random seeding?
+* Pull out locks around calls to karc4rand*
+
+## Live images enhancement
+
+The live images are pretty rough to use currently. The following minimum enhancements should be added:
+
+1. Let the user choose the keyboard layout at startup, do not assume QWERTY
+2. Configure network interfaces automatically, using DHCP
For more theoretical projects and project concepts see [[ResearchProjects|/docs/developer/ResearchProjectsPage]]