1. ATA block devices in devfs:
Detected ATA drives (hda, hdb, hdc, hdd) are now registered as
block device nodes in /dev via ata_register_devfs(). Each node
supports read/write at byte offsets (with sector-aligned I/O
internally). Previously, drives were detected but invisible
in /dev, so 'ls /dev' showed no disk devices and mount had to
use ata_name_to_drive() internally.
2. /proc/dmesg:
Added /proc/dmesg to procfs that reads the kprintf ring buffer
via klog_read(). Uses heap allocation (16KB) to avoid kernel
stack overflow. The 'dmesg' command now works correctly.