On Tuesday 05 February 2008, William Case wrote: > Where and how does this emulation take place? Or, I assume Libata is a > driver in the kernel. No matter how it might be compiled, it would be > in a machine language (binary) format. Is it written in assembly and > run by the CPU, or does SCSI code have its own set of machine code that > can be used for emulation? By the controller? My understanding is that > assembly code only applies to the CPU and the GPU. The libata code sits between the kernel's internal SCSI subsystem and the actual ATA hardware and translates the kernel's SCSI API (not the same as actual SCSI commands, just the kernel's API that is normally used to interface to SCSI host adapters to send the SCSI command) into commands for the various ATA controllers. At least that is my high-level understanding of the mechanism. Alan Cox can comment much better on exactly how libata does its job and exactly what that job is. -- Lamar Owen www.pari.edu