¤³¤Î¥Ú¡¼¥¸¤òÊÔ½¸¤¹¤ëºÝ¤Ï¡¢ÊÔ½¸¤Ë´Ø¤¹¤ëÊý¿Ë¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£

³µÍ×

  • mm/memory.c¤Ë¤ÆÄêµÁ
  • °ú¿ô¤ÇÅϤµ¤ì¤¿¸Å¤¤¥Ú¡¼¥¸¤«¤é¿·¤·¤¤¥Ú¡¼¥¸¤Ë¥Ç¡¼¥¿¤ò¥³¥Ô¡¼¤¹¤ë

°ú¿ô

  • from--¥³¥Ô¡¼¸µ¤Î¸Å¤¤¥Ú¡¼¥¸
  • to--¥³¥Ô¡¼Àè¤Î¿·¤·¤¤¥Ú¡¼¥¸
  • address--»ÈÍѤµ¤ì¤Ê¤¤

¼ÂÁõ

/*

* We special-case the C-O-W ZERO_PAGE, because it's such
* a common occurrence (no need to read the page to know
* that it's zero - better for the cache and memory subsystem).
*/

static inline void copy_cow_page(struct page * from, struct page * to, unsigned long address) {

	if (from == ZERO_PAGE(address)) {
  • ¥¼¥í¥Ú¡¼¥¸¤òÊÖ¤¹¡£¥¼¥í¥Ú¡¼¥¸¤Ï¥Ú¡¼¥¸¥Õ¥ì¡¼¥à³ä¤êÅö¤Æ¤òÃٱ䤵¤»¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë
    • ¥¼¥í¥Ú¡¼¥¸¤Ï¥°¥í¡¼¥Ð¥ë¤Ê¶¦Í­¥Ú¡¼¥¸¤Ç¤¢¤ë
    • ¥¼¥í¥Ú¡¼¥¸¤Ë¤Ï½ñ¤­¹þ¤ßÉԲĤΰõ¤¬ÉÕ¤±¤Æ¤¢¤ë¤¿¤á¡¢¥×¥í¥»¥¹¤¬½ñ¤­¹þ¤â¤¦¤È¤¹¤ë¤È¡¢¥³¥Ô¡¼¥ª¥ó¥é¥¤¥Èµ¡¹½¤¬Æ¯¤¯
      • ¤³¤Î¾ì¹ç¤Ë¸Â¤ê¡¢¥×¥í¥»¥¹¤Ï½ñ¤­¹þ¤à¤³¤È¤¬¤Ç¤­¤ë¥Ú¡¼¥¸¤ò³ÍÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë
    • ¾ÜºÙ¤ÏZERO_PAGE()/linux2.6¤ò»²¾È
		clear_user_highpage(to, address);
		return;
	}
	copy_user_highpage(to, from, address);

}

¸Æ½Ð¸µ


ÍúÎò

  • ºî¼Ô¡§¤Ò¤é
  • ÆüÉÕ¡§2005/10/4
  • Âоݡ§2.6.10
    ¹¹¿·Æü¹¹¿·¼Ô¹¹¿·ÆâÍÆ

¥³¥á¥ó¥È



¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2009-11-24 (²Ð) 07:11:43 (3070d)