1 /* Public domain. */ 2 3 #ifndef _LINUXKPI_LINUX_PAGEVEC_H_ 4 #define _LINUXKPI_LINUX_PAGEVEC_H_ 5 6 #include <sys/types.h> 7 #include <sys/systm.h> 8 #include <sys/errno.h> 9 10 #include <linux/pagemap.h> 11 12 #define PAGEVEC_SIZE 15 13 14 struct pagevec { 15 uint8_t nr; 16 struct page *pages[PAGEVEC_SIZE]; 17 }; 18 19 static inline unsigned int pagevec_space(struct pagevec * pvec)20pagevec_space(struct pagevec *pvec) 21 { 22 return PAGEVEC_SIZE - pvec->nr; 23 } 24 25 static inline void pagevec_init(struct pagevec * pvec)26pagevec_init(struct pagevec *pvec) 27 { 28 pvec->nr = 0; 29 } 30 31 static inline void pagevec_reinit(struct pagevec * pvec)32pagevec_reinit(struct pagevec *pvec) 33 { 34 pvec->nr = 0; 35 } 36 37 static inline unsigned int pagevec_count(struct pagevec * pvec)38pagevec_count(struct pagevec *pvec) 39 { 40 return pvec->nr; 41 } 42 43 static inline unsigned int pagevec_add(struct pagevec * pvec,struct page * page)44pagevec_add(struct pagevec *pvec, struct page *page) 45 { 46 pvec->pages[pvec->nr++] = page; 47 return PAGEVEC_SIZE - pvec->nr; 48 } 49 50 static inline void __pagevec_release(struct pagevec * pvec)51__pagevec_release(struct pagevec *pvec) 52 { 53 release_pages(pvec->pages, pagevec_count(pvec)); 54 pagevec_reinit(pvec); 55 } 56 57 static inline void pagevec_release(struct pagevec * pvec)58pagevec_release(struct pagevec *pvec) 59 { 60 if (pagevec_count(pvec)) 61 __pagevec_release(pvec); 62 } 63 64 static inline void check_move_unevictable_pages(struct pagevec * pvec)65check_move_unevictable_pages(struct pagevec *pvec) 66 { 67 } 68 69 #endif /* _LINUXKPI_LINUX_PAGEVEC_H_ */ 70