Section Navigation
FreeBSD Quarterly Status Report
Introduction
In the month of September, the FreeBSD Project continued its investment in long-term projects, including continuing work on a fine-grained SMP implementation, support for Kernel Schedulable Entities (KSE) supporting highly efficient threading, and broadening support for modern hardware platforms, including Intel's new IA64 architecture, UltraSparc, and PowerPC. Additional focus was placed on the release process, including work on the release notes infrastructure, support for DVD releases, and work on a binary updating tool.
Due to the delay in getting the September report out the door, the November status report will also cover October. During the month of November, we look forward to BSDCon Europe, the first such event outside the continental United States. The USENIX conference paper submission deadlines are also in November, and FreeBSD users and developers are encouraged to submit to the general and FREENIX tracks. Please see www.usenix.org for more information.
- binup
- Compressed TCP state
- Fibre Channel Support
- FreeBSD C99/POSIX Conformance Project
- FreeBSD DVD generation
- FreeBSD Java Project
- FreeBSD libh Project
- FreeBSD/sparc64 port
- Improving FreeBSD startup scripts
- Intel Gigabit driver
- Intel Gigabit Ethernet
- jpman project
- KSE
- Multiple console support
- Netgraph ATM
- Network console
- Network device nodes
- Network SMP locking
- New Mount(2) API
- Porting ppp to hurd & linux
- PowerPC Port
- PPP IPv6 Support
- PRFW
- RELNOTESng
- SMPng Status Report
- SYN cache implementation for FreeBSD
- TIRPC
binup
URL: http://www.FreeBSD.org/projects/updater.html
Contact: Eric Melville <[email protected]>
Contact: Murray Stokely <[email protected]>
The project has gained a mailing list, [email protected] - and the source tree has been moved into the projects/ directory in the FreeBSD CVS repository. Current work is focusing on extending the FreeBSD package framework, and the client library should be rewritten and completed by the end of the year.
TODO: make the projects/ hierarchy into a cvsup distribution and add it to cvs-all. Then update distrib.self.
Compressed TCP state
Contact: Jonathan Lemon <[email protected]>
Development on this project has been slowed, pending the commit of the syncache code, as this builds on part of that work.
Fibre Channel Support
URL: http://www.feral.com/isp.html
Contact: Matthew Jacob <[email protected]>
Bug fixing and move to -STABLE of 2Gb support.
FreeBSD C99/POSIX Conformance Project
URL: http://people.FreeBSD.org/~mike/c99/
Contact: Mike Barcroft <[email protected]>
Contact: FreeBSD-Standards Mailing List <[email protected]>
The FreeBSD C99/POSIX Conformance Project aims to implement all requirements of the C99 Standard and the latest 1003.1-200x POSIX draft (currently Draft 7). In cases where aspects of the standard cannot be followed, those aspects will be documented in the c99(7) or posix(7) manuals. It is also an aim of this project to implement regression tests to ensure correctness whenever possible.
Patches that implement the <stdint.h> and <inttypes.h> headers, and modifications to printf(3) have been developed and will be committed shortly. They will allow us to use some of the new types C99 introduces, such as intmax_t and the printf(3) conversion specifier "%j".
FreeBSD DVD generation
Contact: Brian Somers <[email protected]>
A two disc set has been mastered and sent for pressing. There are a few surprises with this release - details will be given in the official announcement (at BSDConEurope).
FreeBSD Java Project
URL: http://www.FreeBSD.org/java/
Contact: Greg Lewis <[email protected]>
The project has moved forward on JDK 1.3.1 development this month, with the release of two more patchsets. The team is reasonably confident that the latest patchset is a stable release of the core JDK 1.3.1 tools and classes, when the default "green" threads subsystem is used. This is mostly thanks to hard work by Fuyuhiko Maruyama to stabilize and fix the code. Bill Huey has also been progressing with his work on the "native" threads subsystem, although this hasn't yet reached the stability of "green" threads. Another (arguably the) major highlight of the latest patchset was the integration of NetBSD support by Scott Bartram and Alistair Crooks (the latter of NetBSD packages fame). Hopefully OpenBSD support will follow, making it truly a united BSD Java Project.
FreeBSD libh Project
URL: http://www.FreeBSD.org/projects/libh.html
Contact: Alexander Langer <[email protected]>
Contact: Nathan Ahlstrom <[email protected]>
The build process is now creating four different versions of the libs, which include support for TVision, Qt, both or none. I created some first packages from existing ports and installed those libh packages on my system only using libh's tools, including registering all the files in the package database, recording their checksums etc. Patches to the disk editor have been submitted, which include functionality to write the changes in the fdisk part and initial support for a disk label editor. We'll soon have a new committer.
FreeBSD/sparc64 port
Contact: Jake Burkholder <[email protected]>
Contact: Thomas Moestl <[email protected]>
I am pleased to announce that as of 1 AM Friday October 19th, the sparc64 port boots to single user mode. A few binaries from the base system have been built and verified to work properly. Much of this work is still in review for commit, but will be integrated into the cvs tree as soon as possible. EBus support has been ported from NetBSD, and ISA support has been written. The PCI host bridge code has stabilized, and busdma seems to work correctly now. The sio driver has had EBus support added, and the ATA driver has been modified so that it works on big-endian systems and uses the busdma API. With these changes, a root file system can now be successfully mounted from ATA disks on sparc64, even in DMA mode. The gem driver, which supports Sun GEM and ERI and Apple GMAC and GMAC2 ethernet adaptor, has been ported from NetBSD but has not yet had sufficient testing.
Improving FreeBSD startup scripts
URL: http://groups.yahoo.com/group/FreeBSD-rc/
URL: http://www.cs.rmit.edu.au/~lukem/bibliography.html
URL: http://www.netbsd.org/Documentation/rc/
Contact: Doug Barton <[email protected]>
Contact: Gordon Tetlow <[email protected]>
This group is for discussion about the startup scripts in FreeBSD, primarily the scripts in /etc/rc*. Primary focus will be on improvements and importation of NetBSD's excellent work on this topic.
Alright folks, I finally got off my butt last night and put together a roadmap for the migration to the new rc.d init scripts that were imported from NetBSD a long time ago and just sat in the tree.
M1 (Patch included)
Setup infrastructure
Make rcorder compile
Hook rc.subr into the distribution (and mergemaster)
Hook rcorder into the world
Add toggle in rc.conf to switch between rc_ng and current boot scripts
M2
Get FreeBSD to boot with the new boot scripts
Rewrite the /etc/rc.d scripts to work with FreeBSD
M3
Add some FreeBSD specific support into rc.subr
M4
Add true dependency checking to the infrastructure so that starting nfsd will start
mountd and rpcbind
add support into rc.subr
Add dependencies into rc.d scripts
I'd like a couple of people to take a look at this and then I'll submit a pr for it if there aren't too many objections. I'm expecting M2 to run into quite a bikeshed, but hey, I got my nice shiny asbestos back from the cleaners.
Intel Gigabit driver
Contact: Jonathan Lemon <[email protected]>
The gx driver has finally been committed to the tree. The driver provides support for the Intel PRO/1000 cards, both fiber and copper variants. The driver supports VLAN tagging and TCP/IP checksum offload.
Intel Gigabit Ethernet
Contact: Matthew Jacob <[email protected]>
Quite a lot of cleanup of this driver. Bug fixes and some performance enhancements. However, this driver is likely to be removed shortly and replaced by one from Intel itself.
jpman project
URL: http://www.jp.FreeBSD.org/man-jp/
Contact: <[email protected]>
We have finished updating section [125678] manpages to 4.4-RELEASE based, 1 week after 4.4-RELEASE is announced. To finish this update, OKAZAKI Tetsurou has imported Ex/Rv macro support on ja-groff-1.17.2_1. SUZUKI Koichi did most Ex/Rv changes on Japanese manpages. He also find some issues of these macro usage on some original manpages and filed a PR. For post-4.4-RELEASE, now we target 4.5-RELEASE. Section 3 update is also in progress.
KSE
URL: http://www.FreeBSD.org/~jasone/kse/
URL: http://www.FreeBSD.org/~julian
Contact: <[email protected]>
In the last month, not a lot has happened other than settling in of the big August commit. Largely due to me having a sudden increased workload at work, and a need for increased time to be spent elsewhere. However some design work has proceeded. The API has firmed up somewhat and several people have been reading through what has been done already in order to be able to help in the next phase.
Milestone 3 will be to have the ability to generate and remove multiple threads/KSEs per process. Milestone 3 will NOT require that doing so will be safe. (especially in SMP systems), i.e. locking issues will not be fully addressed, so while some testing will be possible, it will not be possible to actually run in this mode with any load.
This will require allocators and destructors for the new structures. Creation of the syscalls. Generation of an accurate written API for the userland crew. Writing of the upcall launch code. Production of a userland test program (not a full thread scheduler). Resolution of some of the more glaring incompatibilities (e.g. the scheduler) in a backwards compatible manner. (i.e. if there are no multi threaded processes on a system it should behave the same as now (and be as reliable)).
Criteria for knowing when we have reached Milestone 3 is the ability for a simple process on an unloaded system to perform a series of blocking syscalls reliably. e.g. open 2 sockets, and send data on one, after having done a read on another, and then 'respond' in like manner..
Multiple console support
Contact: Jonathan Lemon <[email protected]>
Currently, a single device may act as a console at any time, which requires the user to choose the console device at boot time. With the upcoming network console support, it is desirable to allow multiple console devices which behave identically, and to alter consoles while the kernel is running.
The code is completed, and needs some final polishing to clean up the rough edges. Console output can be sent to both syscons and sio, (as well as the network) and when in ddb, input can be taken from any input source. A small control program allows adding and removing consoles on the fly.
Netgraph ATM
Contact: Harti Brandt <[email protected]>
ATM-Forum LAN-emulation version 2.0 without support for QoS has been implemented and tested. The ILMI daemon has been modularized into a general mini-SNMP daemon, an ILMI module and a not yet finished IPOA (IP over ATM) module.
Network console
Contact: Jonathan Lemon <[email protected]>
This project's goal is to add low level network functionality to FreeBSD. The initial target is to make a network console available for remote debugging with ddb or gdb. A secondary target is to utilize the code to perform network crash dumps. The design assumes that the network card and driver are working, but does not rely on other parts of the kernel.
Initial development has been fairly rapid, and a minimal TCP/IP stack has been written. It is currently possible to telnet to a machine which is at the ddb> prompt and interact with the debugger.
Network device nodes
Contact: Jonathan Lemon <[email protected]>
Network devices now support aliases in the form of /dev/netN, where N is the interface index. Devices may be wired down to a specific index number by entries in /boot/device.hints of either:
hint.net.<ifindex>.dev="devname" hint.net.<ifindex>.ether="ethernet address"
Additionally, ifconfig has been updated so that it will accept the alias name when configuring a device.
Network SMP locking
Contact: Jonathan Lemon <[email protected]>
Not much progress has been made this month, with other projects occupying most of my time. However, reviewing all the code and data structures had a side benefit; a hash table for inet addresses has been added. This will significantly speed up interface address lookups in the case where there are a larger number of interface aliases.
New Mount(2) API
Contact: Poul-Henning Kamp <[email protected]>
Contact: Maxime Henrion <[email protected]>
We've made some good progress now, and the new nmount(2) syscall is nearly finished. There is still some work to do to have a working kernel_mount() and to convert all filesystems to use this new API for their VFS_MOUNT() functions.
Porting ppp to hurd & linux
Contact: Brian Somers <[email protected]>
Status is unchanged since last month. Patches have been submitted to get ppp working under HURD, and mostly under Linux. There are GPL copyright problems that need to be addressed. Many conflicts are expected after the commit of IPv6 support in ppp.
PowerPC Port
Contact: Benno Rice <[email protected]>
There have been a few major successes in the PowerPC port this month. Mark Peek has succeeded in getting the FreeBSD/PowerPC kernel cross compiled on FreeBSD and booting under the PSIM simulator (now in /usr/ports/emulators/psim-freebsd). I have succeeded in getting the FreeBSD loader to load and execute kernels using the OpenFirmware found on Apple Macintosh hardware. Mark is now working on completing some of the startup and pmap code, while I am taking advantage of the simulator to work on some interrupt and device issues.
PPP IPv6 Support
Contact: Brian Somers <[email protected]>
The software has been committed to -current and seems functional. Outstanding issues include dealing with IPV6CP events (linkup & linkdown scripts) and allocating site-local and global addresses (currently, ``iface add'' is the only way to actually use the link). A bug exists in -stable (running the not-yet-MFC'd ppp code) whereby routing entries are disappearing after a time (around 12 or 24 hours). No further details are yet available.
PRFW
URL: http://www.freesoftware.fsf.org/jailuser/
Contact: Evan Sarmiento <[email protected]>
PRFW provides hooks in the FreeBSD kernel, allowing users to insert their own checks in system calls and various kernel functions. PRFW is nearing 0.5, which will incorporate numerous structural changes such as, much faster per-process hooks, kernel function hooks, plus, a new way of adding hooks which would enable users to reference hooks by a string.
RELNOTESng
URL: http://people.FreeBSD.org/~bmah/relnotes/
Contact: Bruce A. Mah <[email protected]>
FreeBSD 4.4-RELEASE was the first release of FreeBSD with its new-style release documentation. Both English and Japanese versions of these documents were created. Regularly-built snapshots of -CURRENT and 4-STABLE release documentation are now available on the Web site, but they require a little HTML infrastructure to make them viewer-friendly. I intend to continue updating my snapshot site at the URL above, at least for a little while.
Call for help: The hardware compatibility lists need to be updated in the areas of the Alpha architecture, USB devices, and PCCARD devices. I'm looking for volunteers to help; interested parties should contact me at the email address above. DocBook experience is not required; familiarity with the hardware above would be very helpful.
SMPng Status Report
URL: http://www.FreeBSD.org/~jasone/smp/
Contact: John Baldwin <[email protected]>
Contact: <[email protected]>
Some progress has been made on the proc locking this month. Also, a new LOCK_DEBUG macro was defined to allow some locking infrastructure to be more efficient. Kernels now only include the filenames of files calling mutex, sx, or semaphore lock operations if the filenames are needed. Also, mutex operations are no longer inlined if any debugging options are turned on. The ucred API was also overhauled to be more locking friendly. A group has also started investigating the tty subsystem to design and possibly implement a locking strategy.
SYN cache implementation for FreeBSD
Contact: Jonathan Lemon <[email protected]>
No new status to report, the code is still waiting to be committed. It is likely that this code will be expanded to include syn cookies as a further fallback mechanism.
TIRPC
URL: http://www.attic.ch/tirpc.html
Contact: Martin Blapp <[email protected]>
As you know, in march 2001 the version 2.3 of TIRPC has been committed together with many userland changes. Alfred Perlstein and Ian Dowse have helped me a lot with the porting effort and if I had problems with understanding the code.
Most bugs are now fixed, some remaining areas to fix are secure RPC (keyserv) and unix domain support. I've patches for these area available. Ian Dowse fixed a lot of outstanding bugs in the rpcbind binary itself. Thank you Ian !
The plan is now to migrate slowly towards TIRPC 2.8, which is threadsafe for the server- and clientside. One first patch I've made available on my URL. TIRPC 2.8 is licensed under the "Sun Standards License Version 1.0" and we have to add some license lines and the license itself to all modified files.
A example is timed_clnt_create.diff which can be found on the homepage.
News Home | Status Home