<br><div class="gmail_quote">On Thu, Feb 7, 2013 at 1:13 PM,  <span dir="ltr">&lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">On Thu, 07 Feb 2013 16:19:33 +0800, horseriver said:<br>
&gt; hi:)<br>
&gt;<br>
&gt;    I am curious about how hd controller work .<br>
&gt;    When user am reaing/writing hd ,it was implemented by sending command<br>
&gt;    to hd controller&#39;s special port.Then ,how does the controller know<br>
&gt;    a new command has received?<br>
&gt;<br>
&gt;    In this procedure , what work does the hd driver do ?<br>
<br>
</div>You may wish to get a copy of &#39;Linux Device Drivers, 3rd Edition&#39;<br>
and read it before posting lots of questions here.<br>
<br>
A free version is available online, and last I checked it was the very<br>
first hit if you google for &#39;Linux device drivers&quot;.<br>
<br></blockquote><div><br>Be sure to read about scatter/gather list processing at the disk controller level.  I believe most hd controllers these days can accept an array of pointers that tells it where to find (place) date for writes (reads).  It would be the drivers responsibility to build the scatter/gather meta information to be compatible with what the controller specs call for.<br>

<br>There is a little info about that here: <a href="http://www.makelinux.net/books/ulk3/understandlk-CHP-14-SECT-1">http://www.makelinux.net/books/ulk3/understandlk-CHP-14-SECT-1</a><br><br>Greg <br></div></div>