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

Subversion Repositories test_project

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
#ifndef _LINUX_VMALLOC_H
2
#define _LINUX_VMALLOC_H
3
 
4
#include <linux/spinlock.h>
5
#include <asm/page.h>           /* pgprot_t */
6
 
7
struct vm_area_struct;
8
 
9
/* bits in vm_struct->flags */
10
#define VM_IOREMAP      0x00000001      /* ioremap() and friends */
11
#define VM_ALLOC        0x00000002      /* vmalloc() */
12
#define VM_MAP          0x00000004      /* vmap()ed pages */
13
#define VM_USERMAP      0x00000008      /* suitable for remap_vmalloc_range */
14
#define VM_VPAGES       0x00000010      /* buffer for pages was vmalloc'ed */
15
/* bits [20..32] reserved for arch specific ioremap internals */
16
 
17
/*
18
 * Maximum alignment for ioremap() regions.
19
 * Can be overriden by arch-specific value.
20
 */
21
#ifndef IOREMAP_MAX_ORDER
22
#define IOREMAP_MAX_ORDER       (7 + PAGE_SHIFT)        /* 128 pages */
23
#endif
24
 
25
struct vm_struct {
26
        /* keep next,addr,size together to speedup lookups */
27
        struct vm_struct        *next;
28
        void                    *addr;
29
        unsigned long           size;
30
        unsigned long           flags;
31
        struct page             **pages;
32
        unsigned int            nr_pages;
33
        unsigned long           phys_addr;
34
};
35
 
36
/*
37
 *      Highlevel APIs for driver use
38
 */
39
extern void *vmalloc(unsigned long size);
40
extern void *vmalloc_user(unsigned long size);
41
extern void *vmalloc_node(unsigned long size, int node);
42
extern void *vmalloc_exec(unsigned long size);
43
extern void *vmalloc_32(unsigned long size);
44
extern void *vmalloc_32_user(unsigned long size);
45
extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);
46
extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask,
47
                                pgprot_t prot);
48
extern void vfree(void *addr);
49
 
50
extern void *vmap(struct page **pages, unsigned int count,
51
                        unsigned long flags, pgprot_t prot);
52
extern void vunmap(void *addr);
53
 
54
extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
55
                                                        unsigned long pgoff);
56
void vmalloc_sync_all(void);
57
 
58
/*
59
 *      Lowlevel-APIs (not for driver use!)
60
 */
61
 
62
static inline size_t get_vm_area_size(const struct vm_struct *area)
63
{
64
        /* return actual size without guard page */
65
        return area->size - PAGE_SIZE;
66
}
67
 
68
extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags);
69
extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags,
70
                                        unsigned long start, unsigned long end);
71
extern struct vm_struct *get_vm_area_node(unsigned long size,
72
                                          unsigned long flags, int node,
73
                                          gfp_t gfp_mask);
74
extern struct vm_struct *remove_vm_area(void *addr);
75
 
76
extern int map_vm_area(struct vm_struct *area, pgprot_t prot,
77
                        struct page ***pages);
78
extern void unmap_kernel_range(unsigned long addr, unsigned long size);
79
 
80
/* Allocate/destroy a 'vmalloc' VM area. */
81
extern struct vm_struct *alloc_vm_area(size_t size);
82
extern void free_vm_area(struct vm_struct *area);
83
 
84
/*
85
 *      Internals.  Dont't use..
86
 */
87
extern rwlock_t vmlist_lock;
88
extern struct vm_struct *vmlist;
89
 
90
#endif /* _LINUX_VMALLOC_H */

powered by: WebSVN 2.1.0

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