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

Subversion Repositories test_project

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * include/linux/pagevec.h
3
 *
4
 * In many places it is efficient to batch an operation up against multiple
5
 * pages.  A pagevec is a multipage container which is used for that.
6
 */
7
 
8
#ifndef _LINUX_PAGEVEC_H
9
#define _LINUX_PAGEVEC_H
10
 
11
/* 14 pointers + two long's align the pagevec structure to a power of two */
12
#define PAGEVEC_SIZE    14
13
 
14
struct page;
15
struct address_space;
16
 
17
struct pagevec {
18
        unsigned long nr;
19
        unsigned long cold;
20
        struct page *pages[PAGEVEC_SIZE];
21
};
22
 
23
void __pagevec_release(struct pagevec *pvec);
24
void __pagevec_release_nonlru(struct pagevec *pvec);
25
void __pagevec_free(struct pagevec *pvec);
26
void __pagevec_lru_add(struct pagevec *pvec);
27
void __pagevec_lru_add_active(struct pagevec *pvec);
28
void pagevec_strip(struct pagevec *pvec);
29
unsigned pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
30
                pgoff_t start, unsigned nr_pages);
31
unsigned pagevec_lookup_tag(struct pagevec *pvec,
32
                struct address_space *mapping, pgoff_t *index, int tag,
33
                unsigned nr_pages);
34
 
35
static inline void pagevec_init(struct pagevec *pvec, int cold)
36
{
37
        pvec->nr = 0;
38
        pvec->cold = cold;
39
}
40
 
41
static inline void pagevec_reinit(struct pagevec *pvec)
42
{
43
        pvec->nr = 0;
44
}
45
 
46
static inline unsigned pagevec_count(struct pagevec *pvec)
47
{
48
        return pvec->nr;
49
}
50
 
51
static inline unsigned pagevec_space(struct pagevec *pvec)
52
{
53
        return PAGEVEC_SIZE - pvec->nr;
54
}
55
 
56
/*
57
 * Add a page to a pagevec.  Returns the number of slots still available.
58
 */
59
static inline unsigned pagevec_add(struct pagevec *pvec, struct page *page)
60
{
61
        pvec->pages[pvec->nr++] = page;
62
        return pagevec_space(pvec);
63
}
64
 
65
 
66
static inline void pagevec_release(struct pagevec *pvec)
67
{
68
        if (pagevec_count(pvec))
69
                __pagevec_release(pvec);
70
}
71
 
72
static inline void pagevec_release_nonlru(struct pagevec *pvec)
73
{
74
        if (pagevec_count(pvec))
75
                __pagevec_release_nonlru(pvec);
76
}
77
 
78
static inline void pagevec_free(struct pagevec *pvec)
79
{
80
        if (pagevec_count(pvec))
81
                __pagevec_free(pvec);
82
}
83
 
84
static inline void pagevec_lru_add(struct pagevec *pvec)
85
{
86
        if (pagevec_count(pvec))
87
                __pagevec_lru_add(pvec);
88
}
89
 
90
#endif /* _LINUX_PAGEVEC_H */

powered by: WebSVN 2.1.0

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