[lc-checkins] CVS: linux/include/linux comp_cache.h,1.29,1.30 mm.h,1.8,1.9 swap.h,1.11,1.12 sysctl.h
Status: Beta
Brought to you by:
nitin_sf
From: Rodrigo S. de C. <rc...@us...> - 2001-12-12 20:45:50
|
Update of /cvsroot/linuxcompressed/linux/include/linux In directory usw-pr-cvs1:/tmp/cvs-serv17791/include/linux Modified Files: comp_cache.h mm.h swap.h sysctl.h Log Message: - 0.20pre2 version updated from 2.4.10 to 2.4.16. - Code was rewritten in swapfile.c to work with the new swap file functions (swap_free, swap_duplicate, swap_info_get, swap_info_put, etc). Index: comp_cache.h =================================================================== RCS file: /cvsroot/linuxcompressed/linux/include/linux/comp_cache.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -r1.29 -r1.30 *** comp_cache.h 2001/10/08 14:56:35 1.29 --- comp_cache.h 2001/12/12 20:45:46 1.30 *************** *** 2,6 **** * linux/mm/comp_cache.h * ! * Time-stamp: <2001-10-06 17:17:13 rcastro> * * Linux Virtual Memory Compressed Cache --- 2,6 ---- * linux/mm/comp_cache.h * ! * Time-stamp: <2001-12-11 12:56:38 rcastro> * * Linux Virtual Memory Compressed Cache *************** *** 349,353 **** #define vswap_address_available() (!list_empty(&vswap_address_free_head)) ! #define virtual_swap_address(entry) (SWP_TYPE(entry) == COMP_CACHE_SWP_TYPE) #define real_swap_address(offset) (vswap_address[offset]->real_entry.val) #define vswap_locked(offset) (down_trylock(&vswap_address[offset]->sem)) --- 349,354 ---- #define vswap_address_available() (!list_empty(&vswap_address_free_head)) ! #define vswap_info_struct(p) (p == &swap_info[COMP_CACHE_SWP_TYPE]) ! #define vswap_address(entry) (SWP_TYPE(entry) == COMP_CACHE_SWP_TYPE) #define real_swap_address(offset) (vswap_address[offset]->real_entry.val) #define vswap_locked(offset) (down_trylock(&vswap_address[offset]->sem)) *************** *** 361,365 **** void comp_cache_swp_duplicate(swp_entry_t); ! void comp_cache_swp_free_generic(swp_entry_t, int); int comp_cache_swp_count(swp_entry_t); --- 362,366 ---- void comp_cache_swp_duplicate(swp_entry_t); ! int comp_cache_swp_free_generic(swp_entry_t, int); int comp_cache_swp_count(swp_entry_t); Index: mm.h =================================================================== RCS file: /cvsroot/linuxcompressed/linux/include/linux/mm.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** mm.h 2001/09/29 20:30:14 1.8 --- mm.h 2001/12/12 20:45:46 1.9 *************** *** 44,48 **** struct mm_struct * vm_mm; /* The address space we belong to. */ unsigned long vm_start; /* Our start address within vm_mm. */ ! unsigned long vm_end; /* Our end address within vm_mm. */ /* linked list of VM areas per task, sorted by address */ --- 44,49 ---- struct mm_struct * vm_mm; /* The address space we belong to. */ unsigned long vm_start; /* Our start address within vm_mm. */ ! unsigned long vm_end; /* The first byte after our end address ! within vm_mm. */ /* linked list of VM areas per task, sorted by address */ *************** *** 111,114 **** --- 112,119 ---- #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ) + /* read ahead limits */ + extern int vm_min_readahead; + extern int vm_max_readahead; + /* * mapping from the currently active vm_flags protection bits (the *************** *** 126,130 **** void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); ! struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int write_access); }; --- 131,135 ---- void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); ! struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int unused); }; *************** *** 271,277 **** #define PG_uptodate 3 #define PG_dirty 4 ! #define PG_decr_after 5 ! #define PG_active 6 ! #define PG_inactive 7 #define PG_slab 8 #define PG_skip 10 --- 276,282 ---- #define PG_uptodate 3 #define PG_dirty 4 ! #define PG_unused 5 ! #define PG_lru 6 ! #define PG_active 7 #define PG_slab 8 #define PG_skip 10 *************** *** 280,292 **** #define PG_arch_1 13 #define PG_reserved 14 ! #ifdef CONFIG_COMP_CACHE ! #define PG_comp_cache 15 #endif #ifdef CONFIG_COMP_SWAP ! #define PG_comp_swap_cache 16 #endif /* Make it prettier to test the above... */ #define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags) #define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags) --- 285,298 ---- #define PG_arch_1 13 #define PG_reserved 14 ! #define PG_launder 15 /* written out by VM pressure.. */ #ifdef CONFIG_COMP_CACHE ! #define PG_comp_cache 16 #endif #ifdef CONFIG_COMP_SWAP ! #define PG_comp_swap_cache 17 #endif /* Make it prettier to test the above... */ + #define UnlockPage(page) unlock_page(page) #define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags) #define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags) *************** *** 300,311 **** #define PageChecked(page) test_bit(PG_checked, &(page)->flags) #define SetPageChecked(page) set_bit(PG_checked, &(page)->flags) ! ! extern void __set_page_dirty(struct page *); ! static inline void set_page_dirty(struct page * page) ! { ! if (!test_and_set_bit(PG_dirty, &page->flags)) ! __set_page_dirty(page); ! } /* --- 306,313 ---- #define PageChecked(page) test_bit(PG_checked, &(page)->flags) #define SetPageChecked(page) set_bit(PG_checked, &(page)->flags) ! #define PageLaunder(page) test_bit(PG_launder, &(page)->flags) ! #define SetPageLaunder(page) set_bit(PG_launder, &(page)->flags) ! extern void FASTCALL(set_page_dirty(struct page *)); /* *************** *** 315,325 **** * parallel wait_on_page). */ - #define UnlockPage(page) do { \ - smp_mb__before_clear_bit(); \ - if (!test_and_clear_bit(PG_locked, &(page)->flags)) BUG(); \ - smp_mb__after_clear_bit(); \ - if (waitqueue_active(&(page)->wait)) \ - wake_up(&(page)->wait); \ - } while (0) #define PageError(page) test_bit(PG_error, &(page)->flags) #define SetPageError(page) set_bit(PG_error, &(page)->flags) --- 317,320 ---- *************** *** 329,335 **** #define ClearPageReferenced(page) clear_bit(PG_referenced, &(page)->flags) #define PageTestandClearReferenced(page) test_and_clear_bit(PG_referenced, &(page)->flags) - #define PageDecrAfter(page) test_bit(PG_decr_after, &(page)->flags) - #define SetPageDecrAfter(page) set_bit(PG_decr_after, &(page)->flags) - #define PageTestandClearDecrAfter(page) test_and_clear_bit(PG_decr_after, &(page)->flags) #define PageSlab(page) test_bit(PG_slab, &(page)->flags) #define PageSetSlab(page) set_bit(PG_slab, &(page)->flags) --- 324,327 ---- *************** *** 338,345 **** #ifdef CONFIG_COMP_CACHE ! #define PageCompCache(page) test_bit(PG_comp_cache, &(page)->flags) ! #define PageSetCompCache(page) set_bit(PG_comp_cache, &(page)->flags) ! #define PageClearCompCache(page) clear_bit(PG_comp_cache, &(page)->flags) ! #define PageTestandSetCompCache(page) test_and_set_bit(PG_comp_cache, &(page)->flags) #endif #ifdef CONFIG_COMP_SWAP --- 330,337 ---- #ifdef CONFIG_COMP_CACHE ! #define PageCompCache(page) test_bit(PG_comp_cache, &(page)->flags) ! #define PageSetCompCache(page) set_bit(PG_comp_cache, &(page)->flags) ! #define PageClearCompCache(page) clear_bit(PG_comp_cache, &(page)->flags) ! #define PageTestandSetCompCache(page) test_and_set_bit(PG_comp_cache, &(page)->flags) #endif #ifdef CONFIG_COMP_SWAP *************** *** 353,364 **** #define SetPageActive(page) set_bit(PG_active, &(page)->flags) #define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) - #define TestandSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags) - #define TestandClearPageActive(page) test_and_clear_bit(PG_active, &(page)->flags) ! #define PageInactive(page) test_bit(PG_inactive, &(page)->flags) ! #define SetPageInactive(page) set_bit(PG_inactive, &(page)->flags) ! #define ClearPageInactive(page) clear_bit(PG_inactive, &(page)->flags) ! #define TestandSetPageInactive(page) test_and_set_bit(PG_inactive, &(page)->flags) ! #define TestandClearPageInactive(page) test_and_clear_bit(PG_inactive, &(page)->flags) #ifdef CONFIG_HIGHMEM --- 345,352 ---- #define SetPageActive(page) set_bit(PG_active, &(page)->flags) #define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) ! #define PageLRU(page) test_bit(PG_lru, &(page)->flags) ! #define TestSetPageLRU(page) test_and_set_bit(PG_lru, &(page)->flags) ! #define TestClearPageLRU(page) test_and_clear_bit(PG_lru, &(page)->flags) #ifdef CONFIG_HIGHMEM *************** *** 430,434 **** extern void clear_page_tables(struct mm_struct *, unsigned long, int); ! struct page * shmem_nopage(struct vm_area_struct * vma, unsigned long address, int no_share); struct file *shmem_file_setup(char * name, loff_t size); extern void shmem_lock(struct file * file, int lock); --- 418,423 ---- extern void clear_page_tables(struct mm_struct *, unsigned long, int); ! extern int fail_writepage(struct page *); ! struct page * shmem_nopage(struct vm_area_struct * vma, unsigned long address, int unused); struct file *shmem_file_setup(char * name, loff_t size); extern void shmem_lock(struct file * file, int lock); *************** *** 451,454 **** --- 440,444 ---- extern int ptrace_detach(struct task_struct *, unsigned int); extern void ptrace_disable(struct task_struct *); + extern int ptrace_check_attach(struct task_struct *task, int kill); /* *************** *** 484,501 **** } ! /* ! * Work out if there are any other processes sharing this ! * swap cache page. Never mind the buffers. ! */ ! static inline int exclusive_swap_page(struct page *page) ! { ! if (!PageLocked(page)) ! BUG(); ! if (!PageSwapCache(page)) ! return 0; ! if (page_count(page) - !!page->buffers != 2) /* 2: us + cache */ ! return 0; ! return swap_count(page) == 1; /* 1: just cache */ ! } extern void __free_pte(pte_t); --- 474,479 ---- } ! extern int can_share_swap_page(struct page *); ! extern int remove_exclusive_swap_page(struct page *); extern void __free_pte(pte_t); Index: swap.h =================================================================== RCS file: /cvsroot/linuxcompressed/linux/include/linux/swap.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** swap.h 2001/10/08 14:56:35 1.11 --- swap.h 2001/12/12 20:45:46 1.12 *************** *** 11,20 **** #ifdef CONFIG_COMP_CACHE ! /* some architectures may deal with SWP_ENTRY differently, such as ! * UML. Use MAX_SWAPFILES for COMP_CACHE_SWP_TYPE may cause problems, ! * so let's decrease the maximum number in order to use safely the ! * last swap file type (in this case 31) */ ! #define MAX_SWAPFILES 31 #else #define MAX_SWAPFILES 32 --- 11,20 ---- #ifdef CONFIG_COMP_CACHE ! /* Some architectures may deal with SWP_ENTRY differently, such as ! * UML. Using MAX_SWAPFILES for COMP_CACHE_SWP_TYPE may cause ! * problems, so let's decrease the maximum number in order to use ! * safely the last swap file type (in this case 31) */ + #define MAX_SWAPFILES 31 #else #define MAX_SWAPFILES 32 *************** *** 93,96 **** --- 93,100 ---- extern int nr_swap_pages; + + /* Swap 50% full? Release swapcache more aggressively.. */ + #define vm_swap_full() (nr_swap_pages*2 < total_swap_pages) + extern unsigned int nr_free_pages(void); extern unsigned int nr_free_buffer_pages(void); *************** *** 115,122 **** extern void FASTCALL(lru_cache_del(struct page *)); - extern void FASTCALL(deactivate_page(struct page *)); - extern void FASTCALL(deactivate_page_nolock(struct page *)); extern void FASTCALL(activate_page(struct page *)); - extern void FASTCALL(activate_page_nolock(struct page *)); extern void swap_setup(void); --- 119,123 ---- *************** *** 133,138 **** /* linux/mm/swap_state.c */ extern void show_swap_cache_info(void); ! extern void add_to_swap_cache(struct page *, swp_entry_t); extern void __delete_from_swap_cache(struct page *page); extern void delete_from_swap_cache(struct page *page); --- 134,142 ---- /* linux/mm/swap_state.c */ + #define SWAP_CACHE_INFO + #ifdef SWAP_CACHE_INFO extern void show_swap_cache_info(void); ! #endif ! extern int add_to_swap_cache(struct page *, swp_entry_t); extern void __delete_from_swap_cache(struct page *page); extern void delete_from_swap_cache(struct page *page); *************** *** 142,148 **** /* linux/mm/oom_kill.c */ ! extern void oom_kill(void); /* linux/mm/swapfile.c */ extern unsigned int nr_swapfiles; extern struct swap_info_struct swap_info[]; --- 146,153 ---- /* linux/mm/oom_kill.c */ ! extern void out_of_memory(void); /* linux/mm/swapfile.c */ + extern int total_swap_pages; extern unsigned int nr_swapfiles; extern struct swap_info_struct swap_info[]; *************** *** 156,159 **** --- 161,165 ---- extern int valid_swaphandles(swp_entry_t, unsigned long *); extern void swap_free(swp_entry_t); + extern void free_swap_and_cache(swp_entry_t); struct swap_list_t { int head; /* head of priority-ordered swapfile list */ *************** *** 164,176 **** asmlinkage long sys_swapon(const char *, int); - #define SWAP_CACHE_INFO - - #ifdef SWAP_CACHE_INFO - extern unsigned long swap_cache_add_total; - extern unsigned long swap_cache_del_total; - extern unsigned long swap_cache_find_total; - extern unsigned long swap_cache_find_success; - #endif - extern spinlock_t pagemap_lru_lock; --- 170,173 ---- *************** *** 183,191 **** #define DEBUG_LRU_PAGE(page) \ do { \ ! if (PageActive(page)) \ ! BUG(); \ ! if (PageInactive(page)) \ BUG(); \ ! if (page_count(page) == 0) \ BUG(); \ } while (0) --- 180,186 ---- #define DEBUG_LRU_PAGE(page) \ do { \ ! if (!PageLRU(page)) \ BUG(); \ ! if (PageActive(page)) \ BUG(); \ } while (0) *************** *** 202,206 **** do { \ DEBUG_LRU_PAGE(page); \ - SetPageInactive(page); \ list_add(&(page)->lru, &inactive_list); \ nr_inactive_pages++; \ --- 197,200 ---- *************** *** 212,216 **** ClearPageActive(page); \ nr_active_pages--; \ - DEBUG_LRU_PAGE(page); \ } while (0) --- 206,209 ---- *************** *** 218,239 **** do { \ list_del(&(page)->lru); \ - ClearPageInactive(page); \ nr_inactive_pages--; \ - DEBUG_LRU_PAGE(page); \ } while (0) - - /* - * Ugly ugly ugly HACK to make sure the inactive lists - * don't fill up with unfreeable ramdisk pages. We really - * want to fix the ramdisk driver to mark its pages as - * unfreeable instead of using dirty buffer magic, but the - * next code-change time is when 2.5 is forked... - */ - #ifndef _LINUX_KDEV_T_H - #include <linux/kdev_t.h> - #endif - #ifndef _LINUX_MAJOR_H - #include <linux/major.h> - #endif extern spinlock_t swaplock; --- 211,216 ---- Index: sysctl.h =================================================================== RCS file: /cvsroot/linuxcompressed/linux/include/linux/sysctl.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** sysctl.h 2001/10/01 22:43:59 1.1 --- sysctl.h 2001/12/12 20:45:46 1.2 *************** *** 63,67 **** CTL_DEV=7, /* Devices */ CTL_BUS=8, /* Busses */ ! CTL_ABI=9 /* Binary emulation */ }; --- 63,68 ---- CTL_DEV=7, /* Devices */ CTL_BUS=8, /* Busses */ ! CTL_ABI=9, /* Binary emulation */ ! CTL_CPU=10 /* CPU stuff (speed scaling, etc) */ }; *************** *** 122,125 **** --- 123,127 ---- KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */ KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ + KERN_TAINTED=53, /* int: various kernel tainted flags */ KERN_CADPID=54, /* int: PID of the process to notify on CAD */ }; *************** *** 138,146 **** VM_PAGERDAEMON=8, /* struct: Control kswapd behaviour */ VM_PGT_CACHE=9, /* struct: Set page table cache parameters */ - #ifdef CONFIG_COMP_CACHE VM_PAGE_CLUSTER=10, /* int: set number of pages to swap together */ ! VM_CTL_COMP_CACHE=11 #else ! VM_PAGE_CLUSTER=10 /* int: set number of pages to swap together */ #endif }; --- 140,150 ---- VM_PAGERDAEMON=8, /* struct: Control kswapd behaviour */ VM_PGT_CACHE=9, /* struct: Set page table cache parameters */ VM_PAGE_CLUSTER=10, /* int: set number of pages to swap together */ ! VM_MIN_READAHEAD=12, /* Min file readahead */ ! #ifdef CONFIG_COMP_CACHE ! VM_MAX_READAHEAD=13, /* Max file readahead */ ! VM_CTL_COMP_CACHE=14 #else ! VM_MAX_READAHEAD=13 /* Max file readahead */ #endif }; |