Nexoniarz
fa7669254e
usb: plug and play -- hot-plug, unplug, every interface, real mice
...
Devices can now arrive and leave after boot. A "usbhotplug" kernel thread
handles root-port changes, which it is told about by Port Status Change
events and also checks for every quarter second. It also handles changes
behind hubs, which each hub reports on its status-change endpoint. An
unplugged device has its endpoints closed and any transfer in flight
failed. Then its drivers' disconnect hooks run, the slot is disabled and
its memory is freed. Everything behind a hub that goes goes with it. This
needed the interrupt handler to file command and endpoint-0 completions
for their waiters, so that enumeration can run while keyboards interrupt.
On real hardware: the controller is taken from the firmware through USB
Legacy Support before reset, with SMIs off. On Intel 7/8/9 series parts
the ports are switched over from EHCI, which is where firmware leaves
them.
Every interface of a device is offered to the class drivers, not just
the first, so a receiver's mouse on interface 1 gets a driver. Configure
Endpoint now copies the slot context from the controller. Before, it
rebuilt it and lost the route string and TT fields of devices behind
hubs.
HID: pointers are read in report protocol from their report descriptor.
That covers buttons, X/Y and wheel, relative or absolute, and report IDs.
Boot protocol is kept as the fallback for mice and for keyboards.
Non-pointer HID interfaces are declined rather than treated as tablets.
USB keyboards get software key repeat. Mass storage handles up to four
sticks, each unregistered from the block layer when it is pulled out,
along with its cached blocks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HH7xukt4aaiGj1nQEAoQf1
2026-10-22 11:38:13 +02:00
..
asm.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
audio.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
blkdev.h
usb: plug and play -- hot-plug, unplug, every interface, real mice
2026-10-22 11:38:13 +02:00
buf.h
Raise the disk ceiling: 64-bit blocks, no FSSIZE panic, LBA48
2026-08-10 18:50:31 +02:00
config_sinit.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
date.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
dbg.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
defs.h
mm: the loader jumped out from under itself, and 3 GB was never the limit
2026-09-25 15:23:55 +02:00
device.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
display.h
gfx: the second head shows the boot, not just what comes after it
2026-09-22 21:47:35 +02:00
dma.h
dma: the 4 MB cap was the refusal, not the arena
2026-09-14 22:52:20 +02:00
elf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
errno.h
schfs: a format version policy, and refusing is not falling back
2026-09-12 17:13:59 +02:00
fb.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fcntl.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
file.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
font.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
fs.h
init survives stray signals; commands are 4-34x faster
2026-08-09 15:54:05 +02:00
fsstat.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
gfx.h
gfx: the second head shows the boot, not just what comes after it
2026-09-22 21:47:35 +02:00
input.h
usb-hid: bind an absolute pointer, and plumb EV_ABS through
2026-08-10 18:27:01 +02:00
ioperm.h
ldls: a second driver, and everything it found
2026-09-14 15:20:07 +02:00
irq.h
irq: MSI first, and poll the INTx lines that never arrive
2026-10-22 10:29:24 +02:00
kbd.h
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
keymap.h
kbd: three layouts, and the arrow keys were sitting on top of UTF-8
2026-09-20 01:09:32 +02:00
klog.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
kmem.h
kmem: a slab allocator, and what the fixed tables actually cost
2026-09-22 09:32:06 +02:00
logo.h
docs: a branding folder, and the three marks are not interchangeable
2026-09-12 18:19:09 +02:00
memlayout.h
mm: the loader jumped out from under itself, and 3 GB was never the limit
2026-09-25 15:23:55 +02:00
mmu.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
mp.h
boot: stop assuming the machine is an emulator
2026-10-22 10:29:12 +02:00
netdev.h
net: a frame wakes the stack, instead of waiting for the clock
2026-09-12 17:23:46 +02:00
netuser.h
ldls: L4 was free after all, and the plan closes
2026-09-14 13:37:04 +02:00
param.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00
pci.h
irq: MSI first, and poll the INTx lines that never arrive
2026-10-22 10:29:24 +02:00
pciuser.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
posix.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
proc.h
proc: real CPU time, a tty number, and an exe that is a symlink
2026-09-22 02:45:00 +02:00
qr.h
docs: four directories, and a rule for when a thing leaves the roadmap
2026-09-12 17:13:35 +02:00
sbuf.h
debugger: D5, the network transport -- and the plan closes
2026-09-14 15:33:53 +02:00
schboot.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
schfs.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
schinit.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
sleeplock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
socket.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
spinlock.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
stat.h
unix: a bound socket is a file
2026-09-22 10:06:10 +02:00
syscall.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
text.h
gfx: one glyph blitter, and a terminal cell is a surface
2026-09-23 17:57:16 +02:00
theme.h
gfx: the console and the crash screen stop drawing on a driver by name
2026-08-15 17:04:10 +02:00
traps.h
irq: MSI first, and poll the INTx lines that never arrive
2026-10-22 10:29:24 +02:00
ttf.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
types.h
Initial commit: Schunix as it stands before the SchOS rename
2026-08-09 13:47:01 +02:00
uaccess.h
Rename Schunix to SchOS; the kernel becomes SchIFT
2026-08-09 14:09:59 +02:00
usb.h
usb: plug and play -- hot-plug, unplug, every interface, real mice
2026-10-22 11:38:13 +02:00
user.h
memfd: a shared memory object you reach by descriptor
2026-09-22 09:47:31 +02:00
virtio.h
hybrid: a modeset, from a process
2026-09-14 01:36:05 +02:00
vt.h
licence: SchOS is GPL-2.0-or-later, no longer Apache-2.0
2026-10-22 08:48:45 +02:00
x86.h
audio: /dev/dsp, AudioEngine, and an AC'97 under it
2026-09-24 14:23:13 +02:00