Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
/*
2
 * Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
3
 */
4
#ifndef _LINUX_BOOTMEM_H
5
#define _LINUX_BOOTMEM_H
6
 
7
#include <asm/pgtable.h>
8
#include <asm/dma.h>
9
#include <linux/cache.h>
10
#include <linux/init.h>
11
#include <linux/mmzone.h>
12
 
13
/*
14
 *  simple boot-time physical memory area allocator.
15
 */
16
 
17
extern unsigned long max_low_pfn;
18
extern unsigned long min_low_pfn;
19
 
20
/*
21
 * highest page
22
 */
23
extern unsigned long max_pfn;
24
 
25
/*
26
 * node_bootmem_map is a map pointer - the bits represent all physical
27
 * memory pages (including holes) on the node.
28
 */
29
typedef struct bootmem_data {
30
        unsigned long node_boot_start;
31
        unsigned long node_low_pfn;
32
        void *node_bootmem_map;
33
        unsigned long last_offset;
34
        unsigned long last_pos;
35
        unsigned long last_success;     /* Previous allocation point.  To speed
36
                                         * up searching */
37
} bootmem_data_t;
38
 
39
extern unsigned long __init bootmem_bootmap_pages (unsigned long);
40
extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
41
extern void __init free_bootmem (unsigned long addr, unsigned long size);
42
extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
43
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
44
extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
45
#define alloc_bootmem(x) \
46
        __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
47
#define alloc_bootmem_low(x) \
48
        __alloc_bootmem((x), SMP_CACHE_BYTES, 0)
49
#define alloc_bootmem_pages(x) \
50
        __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
51
#define alloc_bootmem_low_pages(x) \
52
        __alloc_bootmem((x), PAGE_SIZE, 0)
53
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
54
extern unsigned long __init free_all_bootmem (void);
55
 
56
extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn);
57
extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size);
58
extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size);
59
extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat);
60
extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal);
61
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
62
#define alloc_bootmem_node(pgdat, x) \
63
        __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
64
#define alloc_bootmem_pages_node(pgdat, x) \
65
        __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
66
#define alloc_bootmem_low_pages_node(pgdat, x) \
67
        __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0)
68
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
69
 
70
#endif /* _LINUX_BOOTMEM_H */