<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">
<div><br>
</div>
Hi,<br>
<div><br>
</div>
<div>If you have your file data in a user space buffer, &quot;get_user_pages&quot; and &quot;kmap&quot; can be used to get it mapped to a kernel virtual address.&nbsp;<span style="font-size:10pt">But I still doubt that this would solve the problem of mapping the disk file data to kernel
 space.</span></div>
<div><br>
</div>
<div>
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div id="divBdy" class="bdyItmPrt">
<div>
<div>
<div dir="ltr"><font color="black" face="Tahoma" size="2"><span dir="ltr" style="font-size:10pt">
<div>
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div id="divBdy" class="bdyItmPrt">
<div>
<div>
<div dir="ltr"><font color="black" face="Tahoma" size="2"><span dir="ltr" style="font-size:10pt">
<div>
<div style="margin:0 0 2pt 0"><font color="#7F7F7F" face="Tahoma,sans-serif" size="1"><span style="font-size:8pt">Regards,</span></font></div>
<div style="margin:0 0 2pt 0"><font color="#404040" face="Tahoma,sans-serif" size="1"><span style="font-size:8pt"><b>Binoy Jayan</b></span></font></div>
<div style="margin:0 0 2pt 0"><br>
</div>
</div>
</span></font></div>
</div>
</div>
</div>
</div>
</div>
</div>
</span></font></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="font-family:Times New Roman; color:#000000; font-size:16px">
<hr tabindex="-1">
<div id="divRpF552557" style="direction:ltr"><font face="Tahoma" size="2" color="#000000"><b>From:</b> kernelnewbies-bounces@kernelnewbies.org [kernelnewbies-bounces@kernelnewbies.org] on behalf of Yu Bi [lazysmartegg@gmail.com]<br>
<b>Sent:</b> Tuesday, December 31, 2013 8:05 AM<br>
<b>To:</b> kernelnewbies@kernelnewbies.org<br>
<b>Subject:</b> Re: how to use mmap() on a disk file to get a kernel address?<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">Thanks&nbsp; for your idea.<br>
Because I implement a&nbsp; kernel&nbsp; storage service&nbsp; based on a disk file through&nbsp; VFS layer.&nbsp;
<br>
To&nbsp; simplify the implementation,&nbsp; I prefer&nbsp; to&nbsp;&nbsp; read/write&nbsp; the mapped kernel space address instead of the file data access api(such as page cache API / VFS API).<br>
<br>
In FreeBSD, I can use&nbsp; <span>vm_map_find</span><span></span> to map a file into&nbsp; kernel space address( vnode pager)<br>
But in linux,&nbsp; I don't know how to implement this(map disk file into&nbsp; kernel space)?
<div>
<div><img src="https://mail.google.com/mail/u/0/images/cleardot.gif"></div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Thu, Dec 26, 2013 at 3:42 PM, Yu Bi <span dir="ltr">&lt;<a href="mailto:lazysmartegg@gmail.com" target="_blank">lazysmartegg@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr">
<div>Hi,</div>
<div>&nbsp; &nbsp;<span style="line-height:16.666667938232422px; font-size:13.333333969116211px; font-family:Arial,'Liberation Sans','DejaVu Sans',sans-serif">I try to mmap a file in a linux kernel module. I have tried to use the function do_mmap_pgoff</span><span style="line-height:16.666667938232422px; font-size:13.333333969116211px; font-family:Arial,'Liberation Sans','DejaVu Sans',sans-serif">.
 But the address returned is memory virtual address in current process' user space, i.e., below the kernel boundary. Instead, I want to map the file in the kernel space and get the kernel virtual address of the mapped region. Is there any kernel API in Linux
 support this operation? Or I have to reimplement a kernel mmap version ?&nbsp;</span></div>
<div>&nbsp; But reimplement a kernel version mmap() is &nbsp;not easy I guess. Do you have any idea?&nbsp;</div>
<div>&nbsp; &nbsp;</div>
<div><br>
</div>
<div>&nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp;</div>
<div>&nbsp; &nbsp;</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
<p>The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments.</p> 

<p>WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.</p>

<p>www.wipro.com</p>
</body>
</html>