It was thus said that the Great Patrick Finnegan once stated:
You are, IMHO, missing the point. Under linux,
you have an ioctl()
call that lets you send any ocmmand bytes you like to the FDC. You can
therefore get that chip to do anything that it's capable of. And that
call takes care of setting up the DMA controller if you need it,
making sure the DMA buffer doesn't cross a page boundary, and all the
other nasty little details.
Why can't you just write a kernel module that does its ReadID with
interrupts turned off... there's ways to keep the OS from task
switching during the critical section of your code that does the sector
layout determination - writing a kernel module or using realtime
priority (nice -20 might work on Linux) of the OS if it's got it.
Not sure how that would play on a mutiple processor system, but yes, that
would work on a single processor system.
-spc (Overall system performance might suffer, but this is a rare thing
to do anyway ... )