FreeBSD Handbook : Contributing to FreeBSD : What is needed : Low priority tasks
Previous: Medium priority tasks
Next: How to contribute

18.1.3. Low priority tasks

The following tasks are purely cosmetic or represent such an investment of work that it is not likely that anyone will get them done anytime soon:

The first 20 items are from Terry Lambert <terry@lambert.org>

  1. Ability to make BIOS calls from protected mode using V86 mode on the processor and return the results via a mapped interrupt IPC mechanism to the protected mode caller.
  2. Drivers built into the kernel that use the BIOS call mechanism to allow them to be independent of the actual underlying hardware the same way that DOS is independent of the underlying hardware. This includes NetWork and ASPI drivers loaded in DOS prior to BSD being loaded by a DOS-based loader program, which means potential polling, which means DOS-not-busy interrupt generation for V86 machines by the protected mode kernel.
  3. An image format that allows tagging of such drivers data and text areas in the default kernel executable so that that portion of the kernel address space may be recovered at a later time, after hardware specific protected mode drivers have been loaded and activated. This includes separation of BIOS based drivers from each other, since it is better to run with a BIOS based driver in all cases than to not run at all.
  4. Abstraction of the bus interface mechanism. Currently, PCMCIA, EISA, and PCI busses are assumed to be bridged from ISA. This is not something which should be assumed.
  5. A configuration manager that knows about PNP events, including power management events, insertion, extraction, and bus (PNP ISA and PCMCIA bridging chips) vs. card level event management.
  6. A topological sort mechanism for assigning reassignable addresses that do not collide with other reassignable and non-reassignable device space resource usage by fixed devices.
  7. A registration based mechanism for hardware services registration. Specifically, a device centric registration mechanism for timer and sound and other system critical service providers. Consider Timer2 and Timer0 and speaker services as one example of a single monolithic service provider.
  8. A kernel exported symbol space in the kernel data space accessible by an LKM loader mechanism that does relocation and symbol space manipulation. The intent of this interface is to support the ability to demand load and unload kernel modules.
  9. NetWare Server (protected mode ODI driver) loader and subservices to allow the use of ODI card drivers supplied with network cards. The same thing for NDIS drivers and NetWare SCSI drivers.
  10. An "upgrade system" option that works on Linux boxes instead of just previous rev FreeBSD boxes.
  11. Splitting of the console driver into abstraction layers, both to make it easier to port and to kill the X and ThinkPad and PS/2 mouse and LED and console switching and bouncing NumLock problems once and for all.
  12. Other kernel emulation environments for other foreign drivers as opportunity permits. SCO and Solaris are good candidates, followed by UnixWare, etc.
  13. Processor emulation environments for execution of foreign binaries. This is easier than it sounds if the system call interface does not change much.
  14. Streams to allow the use of commercial streams drivers.
  15. Kernel multithreading (requires kernel preemption).
  16. Symmetric Multiprocessing with kernel preemption (requires kernel preemption).
  17. A concerted effort at support for portable computers. This is somewhat handled by changing PCMCIA bridging rules and power management event handling. But there are things like detecting internal vs. external display and picking a different screen resolution based on that fact, not spinning down the disk if the machine is in dock, and allowing dock-based cards to disappear without affecting the machines ability to boot (same issue for PCMCIA).
  18. Reorganization of the source tree for multiple platform ports.
  19. A "make world" that "makes the world" (rename the current one to "make regress" if that is all it is good for).
  20. A 4M (preferably smaller!) memory footprint.


FreeBSD Handbook : Contributing to FreeBSD : What is needed : Low priority tasks
Previous: Medium priority tasks
Next: How to contribute