Libcaps update

Libcaps, the library for userland threading, has been updated. Work is still proceeding on fp stave/restore, and some other tasks, including Galen Sampson’s work. Matt Dillon’s commit message sums it up as neatly as possible, so I’ll just paste it:

Major update to libcaps. Implement support for virtual cpus using
rfork_thread() and implement IPIs, per-virtual-cpu globaldata areas,
and per-virtual-cpu LWKT scheduling.

libcaps halfway

Galen Sampson and Matt Dillon have committed the first stage of the userland threading – globaldata structure and thread primitives are connected, and libcaps can lock in a fashion similar to the existing kernel locks.

nrelease directory

/usr/src/nrelease has the ability to build the new ‘live’ CD iso images. Listed here is what Matt Dillon listed as possible make targets in that directory:


“release: This will do a full buildworld and buildkernel (GENERIC)
with the current source tree, then generate the release
ISO and directory structure in /usr/release.

quickrel: This will do a ‘quick’ buildworld and buildkernel (i.e.
-DNOCLEAN) and then generate the release ISO and directory
structure in /usr/release.

realquickrel: This is even faster. It assumes that the buildkernel and
buildworld have already been done and just generates the ISO
directory structure and ISO file in /usr/release.”

1.0-CURRENT

Aaaand it’s done – rebuilding your system with current sources will give you a uname that reports “DragonFly”. Through some trickery, most ports are apparently not broken by this.

MBWTest added

I’ll quote Matt Dillon’s entry cause I’m working late:

” The MBWTest program (/tmp/mbw1) attempts to figure out the L1 and L2 cache sizes and measures L1, L2, and non-cached linear memory bandwidth.”

FreeBSD-5 boot

Matt Dillon’s added boot code from FreeBSD 5 – this allows AMD64 and ELF64 support. He also pushed in new linker code and some (not yet enabled) support for UFS2.

Use installkernel and installworld as part of your build process, and you should be fine with these changes. However, you will manually have to copy /usr/src/sys/boot/i386/loader/loader.rc to /boot.

There’s been a lot of new code lately – that’s good!

Build from scratch

Matt Dillon’s reorganizing some of the header files; if you build a new kernel anytime soon, make sure you build from scratch using ‘config -r’, as some of the old header files have now vanished.

Network changes starting

Jeffrey Hsu and Matt Dillon’s network changes are being committed – the first third is in, according to a commit by Matt.

Matt describes the plan thusly:

“Basically the goal of this work is to isolate and serialize PCBs in specific threads in order to (A) not have to lock them and (B) improve cache locality for ISR processing loops as well as for data. Isolating a network PCB means dealing with the points where the PCB talks to other parts of the system. There are three points where this happens:

  • incoming packets go through preprocessing (e.g. IP) before
    being routed to the target protocol & PCB (e.g. TCP and UDP).

  • user syscalls operate on PCBs
  • timers and such initiate work related to particular PCBs”

I wish I knew what a PCB was.

Slightly broken

Matt Dillon’s putting in some material from FreeBSD-5, so if PNPBIOS is defined, you may not produce a working kernel during the next few days.

update: PNPBIOS should not be enabled if you have a AMD64 machine, and the K8V motherboard, as that appears to be broken.