OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [bootmem.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Discontiguous memory support, Kanoj Sarcar, SGI, Nov 1999
3
 */
4
#ifndef _LINUX_BOOTMEM_H
5
#define _LINUX_BOOTMEM_H
6
 
7
#include <linux/mmzone.h>
8
#include <asm/dma.h>
9
 
10
/*
11
 *  simple boot-time physical memory area allocator.
12
 */
13
 
14
extern unsigned long max_low_pfn;
15
extern unsigned long min_low_pfn;
16
 
17
/*
18
 * highest page
19
 */
20
extern unsigned long max_pfn;
21
 
22
#ifdef CONFIG_CRASH_DUMP
23
extern unsigned long saved_max_pfn;
24
#endif
25
 
26
/*
27
 * node_bootmem_map is a map pointer - the bits represent all physical
28
 * memory pages (including holes) on the node.
29
 */
30
typedef struct bootmem_data {
31
        unsigned long node_boot_start;
32
        unsigned long node_low_pfn;
33
        void *node_bootmem_map;
34
        unsigned long last_offset;
35
        unsigned long last_pos;
36
        unsigned long last_success;     /* Previous allocation point.  To speed
37
                                         * up searching */
38
        struct list_head list;
39
} bootmem_data_t;
40
 
41
extern unsigned long bootmem_bootmap_pages(unsigned long);
42
extern unsigned long init_bootmem(unsigned long addr, unsigned long memend);
43
extern void free_bootmem(unsigned long addr, unsigned long size);
44
extern void *__alloc_bootmem(unsigned long size,
45
                             unsigned long align,
46
                             unsigned long goal);
47
extern void *__alloc_bootmem_nopanic(unsigned long size,
48
                                     unsigned long align,
49
                                     unsigned long goal);
50
extern void *__alloc_bootmem_low(unsigned long size,
51
                                 unsigned long align,
52
                                 unsigned long goal);
53
extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
54
                                      unsigned long size,
55
                                      unsigned long align,
56
                                      unsigned long goal);
57
extern void *__alloc_bootmem_core(struct bootmem_data *bdata,
58
                                  unsigned long size,
59
                                  unsigned long align,
60
                                  unsigned long goal,
61
                                  unsigned long limit);
62
 
63
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
64
extern void reserve_bootmem(unsigned long addr, unsigned long size);
65
#define alloc_bootmem(x) \
66
        __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
67
#define alloc_bootmem_low(x) \
68
        __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
69
#define alloc_bootmem_pages(x) \
70
        __alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
71
#define alloc_bootmem_low_pages(x) \
72
        __alloc_bootmem_low(x, PAGE_SIZE, 0)
73
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
74
 
75
extern unsigned long free_all_bootmem(void);
76
extern unsigned long free_all_bootmem_node(pg_data_t *pgdat);
77
extern void *__alloc_bootmem_node(pg_data_t *pgdat,
78
                                  unsigned long size,
79
                                  unsigned long align,
80
                                  unsigned long goal);
81
extern unsigned long init_bootmem_node(pg_data_t *pgdat,
82
                                       unsigned long freepfn,
83
                                       unsigned long startpfn,
84
                                       unsigned long endpfn);
85
extern void reserve_bootmem_node(pg_data_t *pgdat,
86
                                 unsigned long physaddr,
87
                                 unsigned long size);
88
extern void free_bootmem_node(pg_data_t *pgdat,
89
                              unsigned long addr,
90
                              unsigned long size);
91
 
92
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
93
#define alloc_bootmem_node(pgdat, x) \
94
        __alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
95
#define alloc_bootmem_pages_node(pgdat, x) \
96
        __alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
97
#define alloc_bootmem_low_pages_node(pgdat, x) \
98
        __alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0)
99
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
100
 
101
#ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP
102
extern void *alloc_remap(int nid, unsigned long size);
103
#else
104
static inline void *alloc_remap(int nid, unsigned long size)
105
{
106
        return NULL;
107
}
108
#endif /* CONFIG_HAVE_ARCH_ALLOC_REMAP */
109
 
110
extern unsigned long __meminitdata nr_kernel_pages;
111
extern unsigned long __meminitdata nr_all_pages;
112
 
113
extern void *alloc_large_system_hash(const char *tablename,
114
                                     unsigned long bucketsize,
115
                                     unsigned long numentries,
116
                                     int scale,
117
                                     int flags,
118
                                     unsigned int *_hash_shift,
119
                                     unsigned int *_hash_mask,
120
                                     unsigned long limit);
121
 
122
#define HASH_EARLY      0x00000001      /* Allocating during early boot? */
123
 
124
/* Only NUMA needs hash distribution.
125
 * IA64 and x86_64 have sufficient vmalloc space.
126
 */
127
#if defined(CONFIG_NUMA) && (defined(CONFIG_IA64) || defined(CONFIG_X86_64))
128
#define HASHDIST_DEFAULT 1
129
#else
130
#define HASHDIST_DEFAULT 0
131
#endif
132
extern int hashdist;            /* Distribute hashes across NUMA nodes? */
133
 
134
 
135
#endif /* _LINUX_BOOTMEM_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.