Yeah, dudez! i got it!
my first sector read out of a IDE disk ever !
well, for now, it is not loaded at the right location in memory, but it is loaded nonetheless ...
Designing a good I/O requests queue for a multitasking environment is almost as complex as designing a scheduler itself, but i'm pretty proud of my design:
- any kind of command can be sent to the controller without changing the code that handle IRQs, because request have virtual function for issue()ing them and handle() them, thus you could extend my IDE driver to ATAPI command by just making another server that creates requests with setup/handle code for ATAPI
- requests can be handled() in any address space (not tested yet) because they map the buffers on demand
- the requests scheduling is a hot-pluggable component, so you can decide to switch to another policy if you wish so (for instance because switching between interactive and batch mode

)
Requests scheduling is also independent of the issue/handle of requests. It just needs to understand block numbers (for instance assume blocks with consecutive numbers can be accessed quicker than blocks that very different block numbers)
- the request scheduling policy can applied to any number of devices (so you can have the same policy for everything or different policies for different drives). By default FIFO policy is applied to all devices.
-- wooarf. n33d s0m3 sl33p, n0w ...
btw, i'd like to thanks Tim for his help & source code ... i finally not reused as much of it as i wished initially, but it was definitely a good HQ for operations.