Hi, Greg<br><br>I've been reading the UIO code, one place puzzled me a lot.<br>May I ask one question about it?<br><br>-------------------------------------------------------------------------------<br>drivers/uio/uio.c<br>static int uio_find_mem_index(struct vm_area_struct *vma)<br>{<br>&nbsp;&nbsp;&nbsp; int mi;<br>&nbsp;&nbsp;&nbsp; struct uio_device *idev = vma-&gt;vm_private_data;<br><br>&nbsp;&nbsp;&nbsp; for (mi = 0; mi &lt; MAX_UIO_MAPS; mi++) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (idev-&gt;info-&gt;mem[mi].size == 0)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return -1;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (vma-&gt;vm_pgoff == mi)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return mi;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return -1;<br>}<br><br>I don't get it why use vma-&gt;vm_pgoff as the index for struct uio_mem mem[MAX_UIO_MAPS], <br>Suppose there are twohardware memory space, if user intends to map the 2nd mem, then <br>the last parameter of mmap should be 1,<br><br>mapaddr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fd, 1);<br><br>Is my understanding correct?<br><br>thanks<br><br>bill<br><br><br><br><br><br><br>        
<br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>