快速业务通道

squid日志的分割

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-07-04
4 * 1024; i = 4)
{
reserve_virt_addr[i] = ''a'';
reserve_virt_addr[i 1] = ''b'';
reserve_virt_addr[i 2] = ''c'';
reserve_virt_addr[i 3] = ''d'';
}
}
else
{
unregister_chrdev(major, "mmapdrv");
return - ENODEV;
} return 0;
} /* remove the module */
void cleanup_module(void)
{
if (reserve_virt_addr)
iounmap(reserve_virt_addr); 拥有帝国一切,皆有可能。欢迎访问phome.netunregister_chrdev(major, "mmapdrv"); return ;
} int mmapdrv_open(struct inode *inode, struct file *file)
{
MOD_INC_USE_COUNT;
return (0);
} int mmapdrv_release(struct inode *inode, struct file *file)
{
MOD_DEC_USE_COUNT;
return (0);
} int mmapdrv_mmap(struct file *file, struct vm_area_struct *vma)
{
unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
unsigned long size = vma->vm_end - vma->vm_start; if (size > mem_size *1024 * 1024)
{
printk("size too bign");
return ( - ENXIO);
} offset = offset mem_start * 1024 * 1024; /* we do not want to have this area swapped out, lock it */
vma->vm_flags |= VM_LOCKED;
if (remap_page_range(vma, vma->vm_start, offset, size, PAGE_SHARED))
{
printk("remap page range failedn");
return - ENXIO;
} return (0);
}
remap_page_range函数的功能是构造用于映射一段物理地址的新页表,实现了内核空间与用户空间的映射,其原型如下:
int remap_page_range(vma_area_struct *vma, unsigned long from, unsigned long to, unsigned long size, pgprot_tprot);
使用mmap最典型的例子是显示卡的驱动,将显存空间直接从内核映射到用户空间将可提供显存的读写效率.

拥有帝国一切,皆有可能。欢迎访问phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号