Re: hd controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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, <Valdis.Kletnieks@xxxxxx> 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
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux