Blame view

include/linux/bootmem.h 4.05 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
  /*
   * Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
   */
  #ifndef _LINUX_BOOTMEM_H
  #define _LINUX_BOOTMEM_H
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
  #include <linux/mmzone.h>
e786e86a5   Franck Bui-Huu   [PATCH] bootmem: ...
7
  #include <asm/dma.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
11
12
13
14
15
16
17
18
19
  
  /*
   *  simple boot-time physical memory area allocator.
   */
  
  extern unsigned long max_low_pfn;
  extern unsigned long min_low_pfn;
  
  /*
   * highest page
   */
  extern unsigned long max_pfn;
92aa63a5a   Vivek Goyal   [PATCH] kdump: Re...
20
21
22
  #ifdef CONFIG_CRASH_DUMP
  extern unsigned long saved_max_pfn;
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23
24
25
26
27
28
29
30
31
32
33
34
  /*
   * node_bootmem_map is a map pointer - the bits represent all physical 
   * memory pages (including holes) on the node.
   */
  typedef struct bootmem_data {
  	unsigned long node_boot_start;
  	unsigned long node_low_pfn;
  	void *node_bootmem_map;
  	unsigned long last_offset;
  	unsigned long last_pos;
  	unsigned long last_success;	/* Previous allocation point.  To speed
  					 * up searching */
679bc9fbb   KAMEZAWA Hiroyuki   [PATCH] for_each_...
35
  	struct list_head list;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
36
  } bootmem_data_t;
f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  extern unsigned long bootmem_bootmap_pages(unsigned long);
  extern unsigned long init_bootmem(unsigned long addr, unsigned long memend);
  extern void free_bootmem(unsigned long addr, unsigned long size);
  extern void *__alloc_bootmem(unsigned long size,
  			     unsigned long align,
  			     unsigned long goal);
  extern void *__alloc_bootmem_nopanic(unsigned long size,
  				     unsigned long align,
  				     unsigned long goal);
  extern void *__alloc_bootmem_low(unsigned long size,
  				 unsigned long align,
  				 unsigned long goal);
  extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
  				      unsigned long size,
  				      unsigned long align,
  				      unsigned long goal);
  extern void *__alloc_bootmem_core(struct bootmem_data *bdata,
  				  unsigned long size,
bb0923a66   Franck Bui-Huu   [PATCH] bootmem: ...
55
  				  unsigned long align,
f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
56
57
  				  unsigned long goal,
  				  unsigned long limit);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
58
  #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
59
  extern void reserve_bootmem(unsigned long addr, unsigned long size);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
60
  #define alloc_bootmem(x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
61
  	__alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
62
  #define alloc_bootmem_low(x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
63
  	__alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
64
  #define alloc_bootmem_pages(x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
65
  	__alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
66
  #define alloc_bootmem_low_pages(x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
67
  	__alloc_bootmem_low(x, PAGE_SIZE, 0)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
68
  #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  
  extern unsigned long free_all_bootmem(void);
  extern unsigned long free_all_bootmem_node(pg_data_t *pgdat);
  extern void *__alloc_bootmem_node(pg_data_t *pgdat,
  				  unsigned long size,
  				  unsigned long align,
  				  unsigned long goal);
  extern unsigned long init_bootmem_node(pg_data_t *pgdat,
  				       unsigned long freepfn,
  				       unsigned long startpfn,
  				       unsigned long endpfn);
  extern void reserve_bootmem_node(pg_data_t *pgdat,
  				 unsigned long physaddr,
  				 unsigned long size);
  extern void free_bootmem_node(pg_data_t *pgdat,
  			      unsigned long addr,
  			      unsigned long size);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
87
  #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
  #define alloc_bootmem_node(pgdat, x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
88
  	__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
  #define alloc_bootmem_pages_node(pgdat, x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
90
  	__alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
91
  #define alloc_bootmem_low_pages_node(pgdat, x) \
71fb2e8f8   Franck Bui-Huu   [PATCH] bootmem: ...
92
  	__alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
93
  #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
6f167ec72   Dave Hansen   [PATCH] sparsemem...
94
95
96
97
98
99
100
  #ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP
  extern void *alloc_remap(int nid, unsigned long size);
  #else
  static inline void *alloc_remap(int nid, unsigned long size)
  {
  	return NULL;
  }
f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
101
  #endif /* CONFIG_HAVE_ARCH_ALLOC_REMAP */
6f167ec72   Dave Hansen   [PATCH] sparsemem...
102

9dec17eb5   David Howells   [PATCH] FRV: Fix ...
103
  extern unsigned long __meminitdata nr_kernel_pages;
86356ab14   Yasunori Goto   [PATCH] wait_tabl...
104
  extern unsigned long nr_all_pages;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
105

f71bf0cac   Franck Bui-Huu   [PATCH] bootmem: ...
106
107
108
109
110
111
112
113
  extern void *alloc_large_system_hash(const char *tablename,
  				     unsigned long bucketsize,
  				     unsigned long numentries,
  				     int scale,
  				     int flags,
  				     unsigned int *_hash_shift,
  				     unsigned int *_hash_mask,
  				     unsigned long limit);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
114

049036643   Andrew Morton   [PATCH] remove HA...
115
  #define HASH_EARLY	0x00000001	/* Allocating during early boot? */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
116
117
118
119
120
121
122
123
124
  
  /* Only NUMA needs hash distribution.
   * IA64 is known to have sufficient vmalloc space.
   */
  #if defined(CONFIG_NUMA) && defined(CONFIG_IA64)
  #define HASHDIST_DEFAULT 1
  #else
  #define HASHDIST_DEFAULT 0
  #endif
f034b5d4e   David S. Miller   [XFRM]: Dynamic x...
125
  extern int hashdist;		/* Distribute hashes across NUMA nodes? */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
127
128
  
  
  #endif /* _LINUX_BOOTMEM_H */