Blame view

mm/internal.h 1.59 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
  /* internal.h: mm/ internal definitions
   *
   * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
   * Written by David Howells (dhowells@redhat.com)
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
   * as published by the Free Software Foundation; either version
   * 2 of the License, or (at your option) any later version.
   */
0f8053a50   Nick Piggin   [PATCH] mm: make ...
11
12
13
14
  #ifndef __MM_INTERNAL_H
  #define __MM_INTERNAL_H
  
  #include <linux/mm.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15

7835e98b2   Nick Piggin   [PATCH] remove se...
16
  static inline void set_page_count(struct page *page, int v)
77a8a7883   Nick Piggin   [PATCH] mm: set_p...
17
  {
7835e98b2   Nick Piggin   [PATCH] remove se...
18
19
20
21
22
23
24
25
26
  	atomic_set(&page->_count, v);
  }
  
  /*
   * Turn a non-refcounted page (->_count == 0) into refcounted with
   * a count of one.
   */
  static inline void set_page_refcounted(struct page *page)
  {
ae1276b93   Qi Yong   set_page_refcount...
27
  	VM_BUG_ON(PageTail(page));
725d704ec   Nick Piggin   [PATCH] mm: VM_BU...
28
  	VM_BUG_ON(atomic_read(&page->_count));
77a8a7883   Nick Piggin   [PATCH] mm: set_p...
29
  	set_page_count(page, 1);
77a8a7883   Nick Piggin   [PATCH] mm: set_p...
30
  }
0f8053a50   Nick Piggin   [PATCH] mm: make ...
31
32
33
34
  static inline void __put_page(struct page *page)
  {
  	atomic_dec(&page->_count);
  }
0c0a4a517   Yasunori Goto   memory hotplug: f...
35
  extern void __free_pages_bootmem(struct page *page, unsigned int order);
0f8053a50   Nick Piggin   [PATCH] mm: make ...
36

48f13bf3e   Mel Gorman   Breakout page_ord...
37
38
39
40
41
42
43
44
45
46
  /*
   * function for dealing with page's order in buddy system.
   * zone->lock is already acquired when we use these.
   * So, we don't need atomic page->flags operations here.
   */
  static inline unsigned long page_order(struct page *page)
  {
  	VM_BUG_ON(!PageBuddy(page));
  	return page_private(page);
  }
b5a0e0113   Alexander van Heukelum   Solve section mis...
47
48
49
50
51
52
53
54
55
56
57
58
  
  /*
   * FLATMEM and DISCONTIGMEM configurations use alloc_bootmem_node,
   * so all functions starting at paging_init should be marked __init
   * in those cases. SPARSEMEM, however, allows for memory hotplug,
   * and alloc_bootmem_node is not used.
   */
  #ifdef CONFIG_SPARSEMEM
  #define __paginginit __meminit
  #else
  #define __paginginit __init
  #endif
0f8053a50   Nick Piggin   [PATCH] mm: make ...
59
  #endif