linux mmapÇý¶¯ÊµÏÖ
ÔÚʵÏÖÇý¶¯³ÌÐòµÄmmapº¯Êýʱ£¬Òª×¢ÒâÓ³É䵨ַµÄת»»ÎÊÌ⣬¼û´úÂë¡£
¶¨ÒåÒ»¸öÉ豸½á¹¹Ì壺
struct leedriver
{
struct cdev cdev;
unsigned char mem[MEMSIZE];
};
ÕâÀïÃæÕâ¸öMEMSIZE£¬×îС¶¼ÒªÊÇ4096£¬ÒòΪÄÚ´æÓ³ÉäÊÇÒÔҳΪµ¥Î»µÄ¡£
ÔÚʵÏÖsimple_remap_mmapº¯Êýʱ£¬´úÂëÈçÏÂ
static int simple_remap_mmap(struct file *filp, struct vm_area_struct *vma)
{
vma->vm_pgoff = ((u32)virt_to_phys(leedriverp->mem)) >> PAGE_SHIFT;
printk("vma->vm_pgoff = %lx\n",vma->vm_pgoff);
if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
vma->vm_ops = &simple_remap_vm_ops;
simple_vma_open(vma);
return 0;
}
×¢Ò⺯Êý¿ªÍ·µÄvma->vm_pgoff = ((u32)virt_to_phys(leedriverp->mem)) >> PAGE_SHIFT;
leedriverp->memÊǸöÄÚºËÐéÄâµØÖ·£¬Ó¦¸Ãͨ¹ývirt_to_physת»»³ÉÎïÀíµØÖ·£¬ÔÙ½øÐÐ×óÒÆ²Ù×÷£¬¾ÍOKÁË¡£
Ö®ºó¶¨ÒåÒ»ÏÂvm_ops
static struct vm_operations_struct simple_remap_vm_ops = {
.open = simple_vma_open,
.close = simple_vma_close,
};
²¢ÇÒÔÚfile_operationsÖÐÌí¼Ó.mmap£½simple_remap_mmap£¬Õû¸ö¹ý³Ì¾ÍÍê³ÉÁË
Ïà¹ØÎĵµ£º
Ò»¡¢ÒýÑÔ£º
±¾ÎĵµµÄÄÚÈݴ󲿷ÝÄÚÈݶ¼ÊÇ´ÓÍøÉÏÊÕ¼¯¶øÀ´£¬È»ºóÅäºÏһЩеĽØÍ¼£¨Äں˰汾£ºV2.4.19£©¡£ÔÚÿһÅäÖÃÏîºó»áÓÐÒ»¸öÑ¡ÔñÖ¸ÄϵIJ¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾Ñ飨Õâ¸ö»¹µ ......
Ò»¡¢Ê¹ÓÃÃüÁîÉèÖÃubuntuµÄipµØÖ·
1.ÐÞ¸ÄÅäÖÃÎļþblacklist.conf½ûÓÃIPV6£º
sudo vi /etc/modprobe.d/blacklist.conf
2.ÔÚÎĵµ×îºóÌí¼Ó blacklist ipv6£¬È»ºó²é¿´Ð޸Ľá¹û£º
cat /etc/modprobe.d/blacklist.conf
3.ÉèÖÃIP£¨ÉèÖÃÍø¿¨eth0µÄIPµØÖ·ºÍ×ÓÍøÑÚÂ룩
sudo ifconfig eth0 192.168.2.1 netmask 255.255.255.0 ......
1.vi /etc/sysconfig/i18n
½«ÄÚÈݸÄΪ
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16
ÕâÑùÖÐÎÄÔÚSSH,telnetÖն˾ͿÉÒÔÕý³£ÏÔʾÁË¡£
2.°²°²×°LinuxµÄʱºòÑ¡ÔñµÄÊÇÖÐÎÄ×Ö,µ«ÊÇʹÓõÄʱºò³öÏÖÁËÂÒÂë½â¾ö·½·¨ÊÇ ......
¡¡¡¡LinuxÄں˰汾ÓÐÁ½ÖÖ:Îȶ¨°æºÍ¿ª·¢°æ.Îȶ¨µÄÄں˾ßÓй¤Òµ¼¶µÄÇ¿¶È,¿ÉÒԹ㷺µØÓ¦ÓúͲ¿Êð.еÄÎȶ¨ÄÚºËÏà¶ÔÓڽϾɵÄÖ»ÊÇÐÞÕýһЩbug»ò¼ÓÈëһЩеÄÇý¶¯³ÌÐò.¶ø¿ª·¢°æÄÚºËÓÉÓÚÒªÊÔÑé¸÷ÖÖ½â¾ö·½°¸,ËùÒԱ仯ºÜ¿ì.ÕâÁ½ÖÖ°æ±¾ÊÇÏ໥¹ØÁª,Ï໥ѻ·µÄ.
LinuxÄں˵ÄÃüÃû»úÖÆ:
num.nu ......
linux find ÃüÁîʹÓÃ
-name Ñ¡Ïî
ÎļþÃûÑ¡ÏîÊÇfindÃüÁî×î³£ÓõÄÑ¡ÏҪôµ¥¶ÀʹÓøÃÑ¡ÏҪôºÍÆäËûÑ¡ÏîÒ»ÆðʹÓá£
¿ÉÒÔʹÓÃijÖÖÎļþÃûģʽÀ´Æ¥ÅäÎļþ£¬¼ÇסҪÓÃÒýºÅ½«ÎļþÃûģʽÒýÆðÀ´¡£
ÏëÒªµÄµ±Ç°Ä¿Â¼¼°×ÓĿ¼ÖвéÕÒÎļþÃûÒÔÒ»¸ö´óд×Öĸ¿ªÍ·µÄÎļþ£¬¿ÉÒÔÓãº
$ find . -name "[A-Z]*" -print
ÏëÒªÔÚ/etcĿ¼Öв ......