Date: Tue, 15 May 2007 16:24:52 +0200 From: "Die Gestalt" <die.gestalt@gmail.com> To: freebsd-drivers@freebsd.org Subject: Generic int 13h driver Message-ID: <5bf3e10d0705150724q3f0fd25fq89094bd02d8f9d29@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi gurus, As the subject implies I'm currently doing the most unholy thing ever. I'm writing a driver that accesses hard disks through BIOS int13h. The reasons why I'm doing this are many, but mainly I will be in a situation where I will not be able to update my kernel and where I want to support as much devices as possible. I know this will be slow and I know this will only work on the i386 platform, I accept that. So far so good, I have a skeleton which is able to query the drive parameters and some basic stuff. But when I want to read, this doesn't work, except in QEmu (http://www.qemu.org). I've tried on a VMWare and a real machine, what I get is a stall for maybe 10 s (sometimes not) and the operations returns saying it's successful but my buffer is actually left untouched. I get no kernel message. My code makes use of the vm86_datacall() API to make requests to the int 13h. I've tried both function 02h and 42h without success. Of course I only attempt this on devices where support has been removed from the kernel (to avoid all conflict). No X server is running on the test machine. I've compiled a kernel without APIC and ACPI support and removed as many devices as possible same problem. So my questions are : - Why does it work in QEmu and not in VMWare or on my laptop ? - Is there something in the VM86 monitor that would prevent this from working ? Thanks in advance any help or hint would be greatly appreciated.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5bf3e10d0705150724q3f0fd25fq89094bd02d8f9d29>