This page tries to give an overview of all the facts that are used in the SKB.

SKB (System Knowledge Base)

  1. Adrian gave a presentation at the Barcelona Workshop (2010) which is helpful as an introduction:

  2. Check Adrians Phd Thesis for a good introduction of what the SKB does and how it does it.


  1. What does the name of the fact stand for
  2. What information is contained in this fact (what is in the first, second, third argument)
  3. Where does this information come from (e.g., ACPI tables, generated based on other facts etc.) and who adds it to the SKB?
  4. Feel free to add anything I missed
  5. Bonus (for when we have the above questions for all the facts): How is this information used for in BF (or is it not used at all?) and for what can it be used for in the future?

Fact: addr(arg1, arg2, arg3)

Description: <insert text>

  1. arg1: <insert text>

  2. arg2: <insert text>

  3. arg3: <insert text>


These facts provide a basic representation of the hardware and are initialized upon boot.

Intel Vt-d

These facts are discovered by ACPI upon boot and describe the I/OMMUs found in the system. The ACPI tables are described in vt-directed-io.pdf.


These facts describe the current state of the system and are updated periodically at runtime.

Other Notes

CPU Information

Updated CPU information based on the SKB datagatherer /usr/skb/measurement

cpu_family(Core_ID, Vendor_String, Family, Model, Stepping).
cpu_thread(Core_ID, Package, Core, HyperThread).
cpu_cache(Core_ID, Name, Level, data|instr|unified, Size, Associativity, LineSize, Shared, Inclusive).
cpu_tlb(Core_ID, data|instr|unified, level, PageSize, Entries, Associativity).
cpu_addrspace(Core_ID, BitsPhys, BitsVirt, BitsGuest).


[1] Advanced Configuration and Power Interface Revision 2.0c,

BarrelfishWiki: SystemKnowledgeBase (last edited 2016-08-22 14:28:57 by LukasHumbel)