docs: README, plan, guides and the site describe what is built now
README: rewritten around what runs (Linux software, Xorg, apk, Linux's drivers), the honest gaps, measured numbers. plan/: 1.0.md is the finish line, where each clause of the acceptance test stands, and the register (one failing clause: a root that survives a reboot); built plans (foundations, hybrid, alpine, xorg) and the decided-against one (wayland) are gone, their content lives in architecture/; roadmap.md is only what is still open. guides: building/layout/testing/adding-a-driver (Linux code may be used). history: four entries (ls -lR, TLB shootdowns, MDIO 0x02460246, netlink MSG_TRUNC). Website: cards, stack, download page, docs index. Code comments that pointed at deleted plan docs point at the architecture docs. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
parent
2556a955b3
commit
cb3d28e3d6
57 changed files with 685 additions and 2121 deletions
|
|
@ -26,7 +26,7 @@
|
|||
//
|
||||
// 4 MB was one framebuffer at 1280x800, which was fine while exactly one driver
|
||||
// wanted one. It stopped being fine the day a display driver could be handed to
|
||||
// userspace (docs/plan/hybrid.md): either side of that handover **both drivers
|
||||
// userspace (docs/architecture/devices.md): either side of that handover **both drivers
|
||||
// exist**, and the incoming one has to allocate its framebuffer before the
|
||||
// outgoing one lets go of its own. So the real requirement is two framebuffers
|
||||
// at once, not one.
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ struct pci_driver {
|
|||
void (*attached)(struct pci_dev *, struct device *);
|
||||
// Give the device up, so a userspace driver can take it.
|
||||
//
|
||||
// docs/plan/hybrid.md is built on the kernel *handing over* a device
|
||||
// docs/architecture/devices.md is built on the kernel *handing over* a device
|
||||
// rather than a process wrestling it away: two drivers writing one set of
|
||||
// registers is not a subtle failure, it is hardware that appears to have
|
||||
// started lying. So the transfer is the incumbent's decision, and this is
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
//
|
||||
// /dev/pci -- device access from userspace.
|
||||
//
|
||||
// docs/plan/hybrid.md, mechanisms 2 and 4: MMIO and DMA to a process. This is
|
||||
// docs/architecture/devices.md, mechanisms 2 and 4: MMIO and DMA to a process. This is
|
||||
// the interface a driver that does not live in the kernel talks to, and it is
|
||||
// deliberately about *PCI devices*, not about any particular driver model.
|
||||
//
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
//
|
||||
// There is no IOMMU. A process holding a DMA buffer can point the device at
|
||||
// any physical address, so this isolates a driver against its own *bugs* and
|
||||
// not against its own *intent*. docs/plan/hybrid.md says so at length and it
|
||||
// not against its own *intent*. docs/architecture/devices.md says so at length and it
|
||||
// remains true here: a crashed driver that restarts instead of taking the
|
||||
// machine down is the whole benefit, and it is not a security boundary.
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
//
|
||||
// It lived next to the driver while exactly one driver read it, with a note
|
||||
// saying it should move when a second reader appeared. One has: cmd/vgpud is
|
||||
// the same device driven from userspace (docs/plan/hybrid.md's first
|
||||
// the same device driven from userspace (docs/architecture/devices.md's first
|
||||
// eviction), and it needs the same register offsets and the same commands.
|
||||
//
|
||||
// Still one file rather than transport-and-protocol split in two. Both readers
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
// is not a number: it names an object the kernel already knows, and handing it
|
||||
// over is the difference between "here is a buffer" and "here is a *copy* of a
|
||||
// buffer". Wayland's wl_shm_create_pool passes one and has no integer-shaped
|
||||
// alternative; docs/plan/hybrid.md's mechanism 1 is this and nothing else.
|
||||
// alternative; docs/architecture/devices.md's mechanism 1 is this and nothing else.
|
||||
//
|
||||
// Every structure below is Linux's, byte for byte, because a musl-linked
|
||||
// program builds them with Linux's headers and we do not get a vote. The
|
||||
|
|
|
|||
Loading…
Reference in a new issue