good sharing. following up on your comments: in the kernel source:
block/*.c are the files for block I/O related stuff - the layer just before ATA, implementing stuff like elevator I/O etc. drivers/block/*.c: hardware-specific files that understand how to talk to each type of harddisk. drivers/scsi/*.c: generally SCSI protocol related stuff (lib*.c), but may contain device specific stuff. drivers/ide/*.c: drivers/ata/*.c: among the lowest level just before sending out port I/O operation. On Fri, Feb 8, 2013 at 8:26 AM, <[email protected]> wrote: > On Fri, 08 Feb 2013 07:48:39 +0800, Peter Teoh said: > > > So the drivers just literally concatenate these command into a string and > > send it over to the device. > > The reason that good disk drivers are hard to write is because it isn't > *just* literally concatenating the commands - it also has to do memory > management (make sure that everybody's data ends up in the right buffers), > command queue management, elevator management (if there's multiple I/O > requests pending from userspace, what order do we issue them in?), error > recovery, power management, and a ton of other stuff... > -- Regards, Peter Teoh
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
