What is the status of this project as of initial release?
We feel it works pretty well. We don't quite have 100% specification
coverage on any target yet and the current targets do vary in their
degrees of robustness and completeness.
There are some things that we know can be improved. At various times,
this code has been:
Built with multiple compilers on multiple OSes, most with no warnings even
from the more pedantic modes.
Tested on a handful of architectures. While IA32 is currently the best
exercised, IA64, Sparc, Power, and Alpha have run to varying degrees.
Developed mostly on MP systems so it's had plenty of MP coverage.
Tested on 8-way and 32-way UnixWare systems.
Tested on instrumented kernels to detect lock heirarchy violations, buffer
overwrites, accesses to freed memory, and so on.
Tested automatically in a user-space fixture that simulates out-of-memory,
region-busy, and other uncommon conditions. This is all done with instrumented
heap checkers to detect bounds violations.
The user-space fixture sometimes gets run through code coverage tools (last
time I looked, we had something like 82% coverage of the common code with
the above tests) and resource-tracking fixtures like the bounds-checking
GCC to expose local stack overwrites or other buffer violations.
Tested with at least six NIC drivers.
Tested with at least three HBA drivers.
Submitted to a battery of benchmarks.
Tested with many combinations of hardware; matrices of multiple cards,
disks, cd's, tapes, etc.
Used to install a currently shipping OS onto an HBA controlled by a UDI
What do we know of that needs more work?
Any individual build of this code may have more or fewer issues. Certainly
there are bugs remaining. But this list shows that the "major" items are
actually pretty minor; the common case of a NIC or HBA would not expose
any of the above.
Region kill is not yet implemented.
udi_mei_driver_error is not implemented.
MA enumeration ranking is not implemented. This is useful for building
large device trees such as USB or huge fibre channel devices.
Performance. udi_mei_call and udi_pio_trans are in the crosshairs for additional
Multiple parents of a driver are not yet supported.
Persistent instance attributes are not well supported on all OSes. To
add injury to injury, the OSes that don't support them also generally
don't correctly handle the default value from udiprops.txt.
Misc minor bugs
Repeatedly shortening and lengthening a udi_buf_t will result in extra
memory being held until the buffer is freed, at which time all related
memory is releaed.
The POSIX builds are unsightly in both the amount of noise they
generate and the general way they copy files around.
Others... (See in particular the Bug list here on Source Forge.)
UDI for Linux supports GIO, NIC and SCSI drivers.
The UDI souce tree is currently targeted at Linux
2.2.x kernels, with some initial 2.4.x support. It is recommended,
but not required, that you install some sort of kernel debugger.
Try out the kdb debugger
or the pice debugger.
For the absolute latest status info, please see the
env/linux/README file or stay tuned to the mailing lists related to
the UDI Reference Implementation.
SCO OpenServer 5
This port has not yet gone through a QA cycle and thus may have issues
with performance, conformance, or completeness. It is offered here as an
SCO UnixWare 7.1.1
The reference port, at initial release, is very close to the code that went
through the QA cycle for the UDI Feature Supplement for UnixWare 7.1.1,
an officially-supported product from SCO
(which includes a Developer's Kit as well as a runtime environment).
UnixWare 7 is currently the most heavily tested target.
The code has evolved somewhat since that test cycle.
This port is offered only as a work in progress. The core tools
(udibuild, udimkpkg) basically work on both IA32 and Sparc. The
environment is still being brought up and the Sparc ABI isn't
finalized, so please don't use these tools to build production
Return to UDI Home Page on Sourceforge
File last modified: 00:00 Thu January 1, 1970