LinuxϰÑkernel¿Õ¼äÓ³Éäµ½Óû§½ø³Ì¿Õ¼ä(mmapʵÏÖ)
ÔÚmmapº¯ÊýÀʹÓÃremap_pfn_range
º¯Êý¡£´úÂëÈçÏ¡£×¢ÒâÒªÉèÖÃÒ»ÏÂvma->vm_pgoffΪÄãÒªmapµÄio¿Õ¼äµÄÎïÀíµØÖ·¶ÔÓ¦µÄÒ³¡£
arm IO/ ÄÚ´æÍ³Ò»±àÖ· ËùÒÔ
#define io_remap_pfn_range(vma,from,pfn,size,prot) \
remap_pfn_range(vma, from, pfn, size, prot)
vm_start, vm_end ÔÚϵͳµ÷ÓÃʱËãºÃÁË£¬Ó¦¸ÃʱÕÒ¸ö¿ÕÏеÿռ䣬Ȼºó¸ù¾ÝsizeËã³övm_end,
static int filter_mmap(struct file *filp, struct vm_area_struct *vma)
{
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
vma->vm_pgoff = ( (u32)map_start >> PAGE_SHIFT);
if (remap_pfn_range
(vma,
vma->vm_start,
vma->vm_pgoff,
vma->vm_end-vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
return 0;
}
map ¹ý³Ì £º
Óû§¿Õ¼ämap(start,offset, len , fd ,...) start Ó³Éäµ½µÄÓû§¿Õ¼äµØÖ·£¬0¾ÍÊÇ×Ô¼ºÈ¥ÕÒ°É£¬offset ÎļþµÄÆ«ÒÆ¡£
old_mmap(struct mmap_arg_struct __user *arg) // arch/arm/kernel/sys_arm.c
|
do_mmap2(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT);
|
do_mmap_pgoff(file, addr, len, prot, flags, pgoff); // mm/mmap.c
¿ÉÄܺϲ¢VMA
·ñÔòзÖÅäÒ»¸öVMA
È»ºó
error = file->f_op->mmap(file, vma);
¾Íµ÷ÓÃÁËÇý¶¯ÀïµÄmmap
Õâʱºòvma->vm_pgoff = pgoff (Õâ¸öpgoff¾ÍÊÇmap(offset, len , fd ,...) ÖÐµÄ offset £¬µ±È»¾¹ý´¦ÀíÁË£¬PAGE_SHIFTÒÆÀ´ÒÆÈ¥µÄ)
Ïà¹ØÎĵµ£º
£¨ÉùÃ÷£ºÕâÊÇ×ªÔØ×Ôhttp://www.chinaunix.net/jh/21/1079.html)
´ÓSybaseµÄÕ¾µãÉÏÏÂÔØÁ½¸öÈí¼þ°ü£¬±ÊÕßÏÂÔØÁË11.0.3.3°æ±¾£¬SybaseĿǰÒÑ¾ÍÆ³öÁËASE11.9.2£¬ÓÉ
ÓÚ11.9.2Èí¼þ°üºÜ´ó£¬ÓÉ6¸örpmÈí¼þ°ü×é³É£¬¸÷λ¿ÉÒÔÈ¥ÆäÕ¾µãÏÂÔØ¡£¶ÔÓÚSybase¡¡11.0.3£¬sybaseÌṩÁË
Á½¸örpm¸ñʽµÄÈí¼þ°ü¡£
£¨ÕâÁ½¸öÎļþ¿ÉÒÔ¿´ÎÒ²©¿ ......
linuxÖеÄSHELLº¯ÊýÊÇ¿ÉÒÔ´ø²ÎÊýµÄ.
====´úÂë===
#!/bin/bash
function show()
{
echo $0 #·µ»Ø½Å±¾±¾ÉíÃû×Ö¶ø²»ÊǺ¯ÊýÃû
echo $1 #·µ»Øµ÷ÓÃʱµÄµÚÒ»¸ö²ÎÊý
.
.
.
echo $9   ......
¹¦ÄÜ˵Ã÷£º¼ì²âÖ÷»ú¡£
Óï¡¡¡¡·¨£ºping
[-dfnqrRv][-c<Íê³É´ÎÊý>][-i<¼ä¸ôÃëÊý>][-I<ÍøÂç½çÃæ>][-l<ǰÖÃÔØ
Èë>][-p<·¶±¾Ñùʽ>][-s<Êý¾Ý°ü´óС>][-t<´æ»îÊýÖµ>][Ö÷»úÃû³Æ»òIPµØÖ·]
²¹³ä˵Ã÷£ºÖ´ÐÐpingÖ¸Áî»áʹÓÃICMP´«ÊäÐÒ飬·¢³öÒªÇó»ØÓ¦µÄ ......
°²×°Ê±Ó²Å̿ռ䲻×ã
¹ÒÔØÒ»¸öÐÂÓ²ÅÌ
ÏȽ«ÐéÄâ»úPower Off£¬ÔÚVirtual Machine Setting¶Ô»°¿òÀïµã»÷×óϽǵēAdd”£¬Ñ¡Ôñ“Hard Disk”£¬Ö®ºóÑ¡Ôñ“Create a new virtual disk”£¬·ÖÅäÈÝÁ¿£¬ÆäËûĬÈÏÅäÖá£
Æô¶¯ÐéÄâ»úϵͳ£¬Óà ......
¹¦ÄÜÃèÊö£º
»ñȡһЩÎļþÏà¹ØµÄÐÅÏ¢¡£
Ó÷¨£º
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *path, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *path, struct stat *buf);
²ÎÊý£º
path£ºÎļþ ......