"The main feature of the indexer is of course the ability to jump easily to the declaration of any global identifier. Indeed, even all references to global identifiers are indexed. Quick access to function declarations, data (type) definitions and preprocessor macros makes code browsing just that tad more convenient. At-a-glance overview of e.g. which code areas that will be affected by changing a function or type definition should also come in useful during development and debugging."
Robert's site, at fxr.watson.org, provides an indexed view of several FreeBSD and Linux kernel source trees, including FreeBSD's head, releng51, releng50, releng49, releng4 and releng3, as well as Linux's 2.4.22 and 2.6.0-test9. He goes on to suggest that very soon one will also be able to use his website to browse various indexed versions of the OpenBSD, NetBSD and DragonFlyBSD kernels as well.
Checkpointing allows you to freeze a copy of an application, and then at a later time, it can be restored. This can be useful for programs that take a long time to complete, such as ones used in scientific research.
Robert Watson posted a very informative announcement of 'ethercons', an ethernet console driver for FreeBSD -current. He was inspired by a FREENIX paper about a Linux ethernet console driver, though has evidently improved upon this design by supporting both input and output, while the Linux driver provides only output monitoring. Robert describes the effort:
"As with the Linux driver, communication happens at the ethernet link layer, using protocol number 0x0666 (entertaining choice). The contents consist of a little meta-data (not found in Linux), and a nul-terminated string, although the kernel code currently generates only single characters due to the nature of the console code. ethercons implements both a low level putc() console interface, and a high-level pseudo-tty appropriate for /dev/console redirection and getty/login. Unlike the other low-level console drivers, ethercons does not implement low-level input checkc/getc, as ethercons is interrupt driven, and that interface is a polled interface that conflicts with the tty code."
The ethernet console driver currently does not support remote debugging due to using the ethernet layer of the network stack. Robert explains, "Since the debugger suspends scheduling, this means interrupt threads, netisrs, etc, aren't running, so for now, ethercons is disabled when 'in the debugger'." However, he does goes on to explain how this could be implemented, using Darwin's ethernet debugger as an example. Read on for the full discussion.
"Things should be much improved. Feedback, as always, is welcome. I'd like to look into making this the default scheduler for 5.2 if things start looking up. I hope that scares you all into using it more. :-)"
User reactions to these changes were generally positive, putting 5.x performance with the ULE scheduler enabled potentially above that of the current stable 4.8 kernel [forum]. This led into an interesting discussion about future plans for the scheduler itself, and how it interfaces with threads.
Pawel Jakub Dawidek announced that GEOM Gate [story] is ready for testing, though internal documentation still notes, "This is highly experimental software and isn't finished yet. Keep that in mind." GEOM Gate is built upon the GEOM 'stackable BIO subsystem' [story], and allows for the remote mounting of disk devices across a network. From the documentation:
"For example you have two machines: 'client' and 'server' and you want to mount /dev/ad0s1a from the 'server' machine on the 'client' machine."
The current GEOM Gate implementation uses the TCP protocol to transport data. Pawel notes that for better performance it should also be implemented to use UDP. Pawel's full email follows, and includes links to much more information describing the new functionality.
Scott Long released the March-Sepetember 2003 Status report, reviewing the past seven months of FreeBSD development. He summarizes:
"As always, the FreeBSD development crew has been hard at work. Support for the AMD64 platform quickly sprang up and is nearly complete. KSE has improved greatly since the 5.1 release and will soon become the default threading package in FreeBSD. Many other projects are in the works to improve performance, enhance the user experience, and expand FreeBSD into new areas. Take a look below at the impressive summary of work!"
Read on for the full report, loaded with updates covering Bluetooth [story], ACPI, dynamically linked /bin [story], icc support, cryptographic support, java [story], KSE [story], porting OpenBSD's pf [story], and much more...
Following the announcement of a couple new security advisories [forum], Barney Wolff noted that all the advisories neglect the latest tree, currently 5.2 [forum]. He says, "This notable omission has been true of every security advisory I can remember, and I've never understood it. If I'm missing some logic that makes it the right thing to do, can somebody please enlighten me?"
Security Officer Emeritus, Warner Losh, explained that historically the FreeBSD Security Officer doesn't send advisories for -current, under the assumption that users of -current are of the more capable sort able to review CVS logs themselves and determine the impact. He goes on to describe the process of merging fixes:
"Standard operating proceedure is to commit to head, then to the branches. However, it is theoretically possible that a bug exists in current that is exploitable in the same way that an advisory addresses. I think we've had this issue only once in the project's history. The code was in the kernel and the then-current -current was so different from stable that patches to stable didn't fix the problem on current and it took a while to realize that there was a problem and to fix it."
Scott Long recently posted a status report to the FreeBSD -current mailing list "for the developers and users who didn't attend the DevSummit this past weekend", taking a look at the status of the upcoming 4.9 and 5-stable releases.
The 4.9 release schedule is likely being pushed back a couple of weeks or more into October, in an attempt to track down instablities introduced with the recent PAE import [story]. Scott explains that, "the consensus reached at the DevSummit is that PAE is a critical feature for 4.x and that removing it isn't desirable unless the problems persist. We encourage anyone to help with this." This comment led to a lengthy debate, much of which you can find below.
The 5-stable release schedule went through a significant overhaul. Scott pointed out that KSE [story] "is progressing extremely well and is no longer a major source of concern for 5-stable." He adds, "Stability is also at a very good level." However, in spite of this good news, overall performance is still not up to the intended level and hence there are a number of significant changes still planned. This has resulted in postponing the 5-stable release from the originally planned 5.2 in a November/December timeframe to the later 5.3 release in a March/April 2004 timeframe.
Maksim Yevmenkin announced on the FreeBSD -current mailing list that a new Blootooth stack is available. The new snapshot includes a number of fixes and improvements, a rewritten libsdp, a new sdbcontrol utility (based on the Linux BlueZ sdptool), and updated documentation. At this time, the stack uses the BlueZ SDP (Service Record Database) server, though a native BSD version is planned.
Read on for the full changelog, as well as a list of future plans for the stack.
Soeren Schmidt announced this weekend that ATAng has been merged into the FreeBSD -current kernel tree. Described by the author as "rather radical changes to the ATA driver", ATAng offers a number of impovements over the old ATA driver. This includes removal of the 'GIANT' lock, an improved framework that supports newer ATA controllers, merging of ATA and ATAPI code, and the removal of numerous bugs.
Pawel Jakub Dawidek announced new software built upon the GEOM 'stackable BIO subsystem' [story] called GEOM Gate, which allows the remote mounting of disk devices across a network. (This functionality is not to be confused with NFS, used to remotely mount filesystems across a network.)
Pawel points out that this is an earlier version, and the code isn't yet fully completed. For example, he notes that running the server software ('ggd') and the client software ('ggc') on the same machine could currently lead to a deadlock.
The announcement email complete with usage examples and the resulting thread that discusses the software's potential follows.
Bosko Milekic recently posted a patch to the freebsd-current mailing list apparently solving some random data corruption problems that have been seen in FreeBSD 5.1 for the past few months. The actual bug is still rather ill-defined, and the workaround to date has been to include the 'DISABLE_PSE' and 'DISABLE_PG_G' options when building the kernel. With Bosko's fix, neither option is now required to prevent data corruption. He explains:
"What the patch does does not directly uncover the true nature of the bug (as I don't know that myself), but it does appear to solve the problem at least for a couple of users I've been confirming with. The first thing it does is load the kernel at 0x400000 instead of 0x100000 (this part was implemented by Peter Wemm who sent it to me a little over a year ago now). The next thing it does is write a page table for the kernel pages that would - given the right pde - map the entire kernel in 4K pages. However, if PSE is enabled, the page table is not used and instead a pde for a 4M page (or several) mapping the kernel in its entirety is[are] written before paging is ever turned on".
Bosko's complete description of the problem follows, including the related FreeBSD history of the past few months, details of testing so far, and what's left to be tested.
FreeBSD 5.1 has been released. This is mostly a technology release, focussed primarily on extending FreeBSD's multiprocessor and application-level threading support. Although many bugs have been fixed since the 5.0 release [story], FreeBSD 5.1 might not be suitable for all users yet, Scott Long of the Release Engineering Team warns in the announcement. If you require the absolute stability FreeBSD is known for, you can always run the latest 4.x release. The release is dedicated to the memory of Alan Eldridge, a talented and dedicated member of the KDE On FreeBSD team.
Robert Watson has started the automatic posting of open issues for the upcoming 5.1 and 5.2 releases. The list for 5.1 is automatically posted to -current every other day, with the most up-to-date version found here. The list is divided into the following four sections: "Must Resolve Issues", "Desired Features", "Documentation items that must be resolved", and "Areas requiring immediate testing".
The list for 5.2 is divided into the same four sections, and also is automatically posted to -current, however at this time only posted once every other week. Robert explains, "Obviously, this list will evolve as our notion of 5.2-RELEASE evolves. I've already had some very useful feedback on this, some new items, item tweaks, etc--I'd welcome further feedback." The most up-to-date version of the 5.2 list can be found here.
Gordon Tetlow has put together a patch to have /bin dynamically linked on FreeBSD. This is the first step on the way to having everything play nicely with ongoing work on getting NSS into the system. He cautions that the patch is preliminary and should probably be installed on a test machine.