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>
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- An "upgrade system" option that works on Linux boxes instead
of just previous rev FreeBSD boxes.
- 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.
- Other kernel emulation environments for other foreign drivers
as opportunity permits. SCO and Solaris are good candidates,
followed by UnixWare, etc.
- Processor emulation environments for execution of foreign binaries.
This is easier than it sounds if the system call interface does not
change much.
- Streams to allow the use of commercial streams drivers.
- Kernel multithreading (requires kernel preemption).
- Symmetric Multiprocessing with kernel preemption (requires kernel
preemption).
- 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).
- Reorganization of the source tree for multiple platform ports.
- A "make world" that "makes the world" (rename the current one
to "make regress" if that is all it is good for).
- 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