内核版本: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
代码行数
- [root@localhost mm]# wc -l swap*
- 863 swap.c
- 2467 swapfile.c
- 401 swap_state.c
- 3491 vmscan.c
1. swap.c
- /*
- * Perform any setup for the swap system
- */
- void __init swap_setup(void)
- {
- unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
- #ifdef CONFIG_SWAP
- bdi_init(swapper_space.backing_dev_info);
- #endif
- /* Use a smaller cluster for small-memory machines */
- if (megs < 16) 【如果memory小于16M,page_cluster设置为2】
- page_cluster = 2;
- else
- page_cluster = 3;
- /*
- * Right now other parts of the system means that we
- * _really_ don't want to cluster much more
- */
- }
2. swapfile.c
3. swap_state.c
- struct address_space swapper_space = {
- .page_tree = RADIX_TREE_INIT(GFP_ATOMIC|__GFP_NOWARN),
- .tree_lock = __SPIN_LOCK_UNLOCKED(swapper_space.tree_lock),
- .a_ops = &swap_aops,
- .i_mmap_nonlinear = LIST_HEAD_INIT(swapper_space.i_mmap_nonlinear),
- .backing_dev_info = &swap_backing_dev_info,
- };
- static const struct address_space_operations swap_aops = {
- .writepage = swap_writepage,
- .set_page_dirty = __set_page_dirty_nobuffers,
- .migratepage = migrate_page,
- };
- struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
- struct vm_area_struct *vma, unsigned long addr)
阅读(302) | 评论(0) | 转发(0) |