Home :: International :: Manuals :: Howto :: FAQ :: Man Pages :: Email Login

 
 

 

MREMAP

Section: Linux Programmer's Manual (2)
Updated: 1996-04-12
Index Return to Main Contents
 

̾Á°

mremap - ²¾ÁÛ¥á¥â¥ê¡¦¥¢¥É¥ì¥¹¤òºÆ¥Þ¥Ã¥×¤¹¤ë  

½ñ¼°

#include <unistd.h>
#include <sys/mman.h>

void * mremap(void * old_address, size_t old_size , size_t new_size, unsigned long flags);  

ÀâÌÀ

mremap ¤Ï¸ºß¤¹¤ë¥á¥â¥ê¡¦¥Þ¥Ã¥×¤ò³ÈÄ¥(¤Þ¤¿¤Ï½Ì¾®)¤¹¤ë¡£ Ʊ»þ¤Ë¤½¤ì¤é¤Ï°Üư¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤(flags °ú¤­¿ô¤È ²Äǽ¤Ê²¾ÁÛ(virtual)¥¢¥É¥ì¥¹¶õ´Ö¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤ë)¡£

old_address ¤Ï³ÈÄ¥(¤Þ¤¿¤Ï½Ì¾®)¤·¤è¤¦¤È¤¹¤ë²¾ÁÛ¥á¥â¥ê¡¦¥Ö¥í¥Ã¥¯ ¤Î¸µ¤Î¥¢¥É¥ì¥¹¡£old_address ¤Ï¥Ú¡¼¥¸¶­³¦(aligne)¤Ë¹ç¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð ¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£old_size ¤Ï¸µ¤Î²¾ÁÛ¥á¥â¥ê¡¦¥Ö¥í¥Ã¥¯¤Î ¥µ¥¤¥º¡£new_size ¤ÏÍ׵᤹¤ëÊѹ¹¸å¤Î²¾ÁÛ¥á¥â¥ê¡¦¥Ö¥í¥Ã¥¯¤Î¥µ¥¤¥º¡£

flags °ú¤­¿ô¤Ï¥Õ¥é¥°¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤Ç¤¢¤ë¡£

Linux ¤Ç¤Ï¥á¥â¥ê¤Ï¥Ú¡¼¥¸¤Ëʬ³ä¤µ¤ì¤ë¡£¥æ¡¼¥¶¡¼¡¦¥×¥í¥»¥¹¤Ï(°ì¤Ä¤Þ¤¿¤Ï) Ê£¿ô¤Î¥ê¥Ë¥¢(linear)¤Ê²¾ÁÛ¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È(segment)¤ò»ý¤Ä¡£ ¤½¤ì¤¾¤ì¤Î²¾ÁÛ¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ï(¥Ú¡¼¥¸¡¦¥Æ¡¼¥Ö¥ë¤Ë) °ì¤Ä¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¥Þ¥Ã¥×¤µ¤ì¤¿¼Â(real)¥á¥â¥ê¡¦¥Ú¡¼¥¸¤ò»ý¤Ä¡£ ¤½¤ì¤¾¤ì¤Î²¾ÁÛ¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤Ï¤½¤ì¼«¿È¤ÎÊݸî(¥¢¥¯¥»¥¹¸¢)¤ò»ý¤Ä¡¢ ¤³¤ì¤Ï¥á¥â¥ê¤¬ÉÔÀµ¤Ë¥¢¥¯¥»¥¹¤µ¤ì¤¿¾ì¹ç(Î㤨¤ÐÆÉ¤ß¹þ¤ßÀìÍѤΥ»¥°¥á¥ó¥È¤Ë ½ñ¤­¹þ¤ó¤À¾ì¹ç)¡¢¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó¿¯³²(segmentation violation)¤ò °ú¤­µ¯¤³¤¹¡£

mremap ¤Ï Linux ¤Î¥Ú¡¼¥¸¡¦¥Æ¡¼¥Ö¥ëÊý¼°¤ò»ÈÍѤ¹¤ë¡£mremap ¤Ï ²¾ÁÛ¥¢¥É¥ì¥¹¤È¥á¥â¥ê¡¦¥Ú¡¼¥¸¤Î¥Þ¥Ã¥×¤òÊѹ¹¤¹¤ë¡£¤³¤ì¤ÏÈó¾ï¤Ë¸úΨŪ¤Ê realloc ¤ò¼ÂÁõ¤¹¤ë¤Î¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£

 

¥Õ¥é¥°

MREMAP_MAYMOVE
¤Ï¸½ºß¤Î²¾ÁÛ¥¢¥É¥ì¥¹¤Ç¥µ¥¤¥ºÊѹ¹¤¬¤Ç¤­¤Ê¤¯¤ÆÁàºî¤ò¼ºÇÔ¤¹¤ë¾ì¹ç¤Ë ²¾ÁÛ¥¢¥É¥ì¥¹¤òÊѹ¹¤¹¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£

 

ÊÖ¤êÃÍ

À®¸ù¤·¤¿¾ì¹ç¤Ï mremap ¤Ï¿·¤·¤¤²¾ÁÛ¥á¥â¥êÎÎ°è¤Ø¤Î¥Ý¥¤¥ó¥¿¡¼¤òÊÖ¤¹¡£ ¥¨¥é¡¼¤Î¾ì¹ç¤Ï -1 ¤¬ÊÖ¤µ¤ì¡¢errno ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤ë¡£

 

¥¨¥é¡¼

EINVAL
ÉÔÀµ¤Ê°ú¤­¿ô¤¬Í¿¤¨¤é¤ì¤¿¡£¤¿¤¤¤Æ¤¤¤Ï old_address ¤¬¥Ú¡¼¥¸¶­³¦¤Ë ¹ç¤Ã¤Æ¤Ê¤¤¡£

EFAULT
¡Ö¥»¥°¥á¥ó¥Æ¡¼¥·¥ç¥ó°ãÈ¿(segmentation fault)¡×¡¢ old_address ¤«¤é old_address+old_size ¤Î ÈϰϤΥ¢¥É¥ì¥¹¤Î¤É¤ì¤«¤¬¤³¤Î¥×¥í¥»¥¹¤Ë¤ª¤¤¤ÆÉÔÀµ¤Ê²¾ÁÛ¥á¥â ¥ê¡¦¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£Î㤨Í׵ᤷ¤¿¥¢¥É¥ì¥¹¶õ´ÖÁ´ÂΤΥޥåפ¬ ¸ºß¤·¤¿¤È¤·¤Æ¤â¡¢¤½¤ì¤é¤Î¥Þ¥Ã¥×¤¬°Û¤Ã¤¿·¿¤Ê¤é¤Ð EFAULT ¤ò ¼õ¤±¼è¤ë¤À¤í¤¦¡£
EAGAIN
¥á¥â¥ê¡¦¥»¥°¥á¥ó¥È¤¬¥í¥Ã¥¯(lock)¤µ¤ì¤Æ¤ª¤ê¡¢ºÆ¥Þ¥Ã¥×¤Ç¤­¤Ê¤¤¡£
ENOMEM
¸½ºß¤Î²¾ÁÛ¥¢¥É¥ì¥¹¤Ç¤Ï¥á¥â¥êÎΰ褬³ÈÄ¥¤Ç¤­¤º¡¢MREMAP_MAYMOVE ¥Õ¥é¥°¤¬ flags ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£¤Þ¤¿¤Ï½½Ê¬¤Ê(²¾ÁÛ)¥á¥â¥ê¤¬ ¸ºß¤·¤Ê¤¤¡£
 

½àµò

¤³¤Î¥³¡¼¥ë¤Ï Linux ÆÃÍ­¤Ç¤¢¤ê¡¢°Ü¿¢¤ò°Õ¿Þ¤·¤¿¥×¥í¥°¥é¥à¤Ç»ÈÍѤ·¤Æ¤Ï ¤¤¤±¤Ê¤¤¡£4.2BSD ¤Ï (¼ÂºÝ¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤¬) Á´¤¯°Û¤Ã¤¿Êý¼°(semantics)¤Ë¤è¤ë mremap(2) ¥³¡¼¥ë¤ò»ý¤Ã¤Æ¤¤¤ë¡£

 

´ØÏ¢¹àÌÜ

getpagesize(2), realloc(3), malloc(3), brk(2), sbrk(2), mmap(2) ¥Ú¡¼¥¸Ê¬³ä¤µ¤ì¤¿¥á¥â¥ê¤Ë´Ø¤·¤Æ¤Î¤è¤ê¾Ü¤·¤¤ÀâÌÀ¤Ï ¤¢¤Ê¤¿¤Î¹¥¤ß¤Î OS ¤Î¶µ²Ê½ñ¤ò»²¾È¤¹¤ë¤³¤È (Modern Operating Systems by Andrew S. Tannenbaum, Inside Linux by Randolf Bentson, The Design of the UNIX Operating System by Maurice J. Bach.)


 

Index

̾Á°
½ñ¼°
ÀâÌÀ
¥Õ¥é¥°
ÊÖ¤êÃÍ
¥¨¥é¡¼
½àµò
´ØÏ¢¹àÌÜ

 
 
 
 
Google
  Web Linuxinfor   
 

Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account

Document on this page is part of "Linuxinfor Man Pages in HTML Format: man2". See Index Page for more info about Authorship and Copyright.

1999-2008 Linuxinfor.com. No rights reserved.