Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17488
  • 博文数量: 5
  • 博客积分: 185
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-07 21:57
文章分类
文章存档

2012年(5)

我的朋友

分类: LINUX

2012-11-18 15:31:20


内核版本:3.6.6/3.2.9 (Hopefully, the swapper part has not changed a lot between the two versions.)

相关代码
mm/
swap.c
swapfile.c
swap_state.c
vmscan.c

代码行数

点击(此处)折叠或打开

  1. [root@localhost mm]# wc -l swap*
  2. 863 swap.c
  3. 2467 swapfile.c
  4. 401 swap_state.c
  5. 3491 vmscan.c

1. swap.c


点击(此处)折叠或打开

  1. /*
  2.  * Perform any setup for the swap system
  3.  */
  4. void __init swap_setup(void)
  5. {
  6.     unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);

  7. #ifdef CONFIG_SWAP
  8.     bdi_init(swapper_space.backing_dev_info);
  9. #endif

  10.     /* Use a smaller cluster for small-memory machines */
  11.     if (megs < 16) 【如果memory小于16M,page_cluster设置为2】
  12.         page_cluster = 2;
  13.     else
  14.         page_cluster = 3;
  15.     /*
  16.      * Right now other parts of the system means that we
  17.      * _really_ don't want to cluster much more
  18.      */
  19. }

2. swapfile.c


3. swap_state.c


点击(此处)折叠或打开

  1. struct address_space swapper_space = {
  2.     .page_tree    = RADIX_TREE_INIT(GFP_ATOMIC|__GFP_NOWARN),
  3.     .tree_lock    = __SPIN_LOCK_UNLOCKED(swapper_space.tree_lock),
  4.     .a_ops        = &swap_aops,
  5.     .i_mmap_nonlinear = LIST_HEAD_INIT(swapper_space.i_mmap_nonlinear),
  6.     .backing_dev_info = &swap_backing_dev_info,
  7. };


点击(此处)折叠或打开

  1. static const struct address_space_operations swap_aops = {
  2.     .writepage    = swap_writepage,
  3.     .set_page_dirty    = __set_page_dirty_nobuffers,
  4.     .migratepage    = migrate_page,
  5. };


点击(此处)折叠或打开

  1. struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
  2.             struct vm_area_struct *vma, unsigned long addr)

阅读(302) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~