source: svn/trunk/newcon3bcm2_21bu/toolchain/mipsel-linux-uclibc/include/linux/pagevec.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1/*
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/* 14 pointers + two long's align the pagevec structure to a power of two */
9#define PAGEVEC_SIZE    14
10
11struct page;
12struct address_space;
13
14struct pagevec {
15        unsigned long nr;
16        unsigned long cold;
17        struct page *pages[PAGEVEC_SIZE];
18};
19
20void __pagevec_release(struct pagevec *pvec);
21void __pagevec_release_nonlru(struct pagevec *pvec);
22void __pagevec_free(struct pagevec *pvec);
23void __pagevec_lru_add(struct pagevec *pvec);
24void __pagevec_lru_add_active(struct pagevec *pvec);
25void pagevec_strip(struct pagevec *pvec);
26unsigned pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
27                pgoff_t start, unsigned nr_pages);
28unsigned pagevec_lookup_tag(struct pagevec *pvec,
29                struct address_space *mapping, pgoff_t *index, int tag,
30                unsigned nr_pages);
31
32static inline void pagevec_init(struct pagevec *pvec, int cold)
33{
34        pvec->nr = 0;
35        pvec->cold = cold;
36}
37
38static inline void pagevec_reinit(struct pagevec *pvec)
39{
40        pvec->nr = 0;
41}
42
43static inline unsigned pagevec_count(struct pagevec *pvec)
44{
45        return pvec->nr;
46}
47
48static inline unsigned pagevec_space(struct pagevec *pvec)
49{
50        return PAGEVEC_SIZE - pvec->nr;
51}
52
53/*
54 * Add a page to a pagevec.  Returns the number of slots still available.
55 */
56static inline unsigned pagevec_add(struct pagevec *pvec, struct page *page)
57{
58        pvec->pages[pvec->nr++] = page;
59        return pagevec_space(pvec);
60}
61
62
63static inline void pagevec_release(struct pagevec *pvec)
64{
65        if (pagevec_count(pvec))
66                __pagevec_release(pvec);
67}
68
69static inline void pagevec_release_nonlru(struct pagevec *pvec)
70{
71        if (pagevec_count(pvec))
72                __pagevec_release_nonlru(pvec);
73}
74
75static inline void pagevec_free(struct pagevec *pvec)
76{
77        if (pagevec_count(pvec))
78                __pagevec_free(pvec);
79}
80
81static inline void pagevec_lru_add(struct pagevec *pvec)
82{
83        if (pagevec_count(pvec))
84                __pagevec_lru_add(pvec);
85}
Note: See TracBrowser for help on using the repository browser.