17f4dd379Sjsg /* Public domain. */ 27f4dd379Sjsg 37f4dd379Sjsg #ifndef _LINUX_PAGEVEC_H 47f4dd379Sjsg #define _LINUX_PAGEVEC_H 57f4dd379Sjsg 67f4dd379Sjsg #include <sys/types.h> 77f4dd379Sjsg #include <sys/systm.h> 87f4dd379Sjsg #include <sys/errno.h> 97f4dd379Sjsg 107f4dd379Sjsg #define PAGEVEC_SIZE 15 117f4dd379Sjsg 12*f005ef32Sjsg struct folio_batch { 13*f005ef32Sjsg }; 14*f005ef32Sjsg 157f4dd379Sjsg struct pagevec { 167f4dd379Sjsg uint8_t nr; 177f4dd379Sjsg struct vm_page *pages[PAGEVEC_SIZE]; 187f4dd379Sjsg }; 197f4dd379Sjsg 207f4dd379Sjsg void __pagevec_release(struct pagevec *); 217f4dd379Sjsg 227f4dd379Sjsg static inline unsigned int pagevec_space(struct pagevec * pvec)237f4dd379Sjsgpagevec_space(struct pagevec *pvec) 247f4dd379Sjsg { 257f4dd379Sjsg return PAGEVEC_SIZE - pvec->nr; 267f4dd379Sjsg } 277f4dd379Sjsg 287f4dd379Sjsg static inline void pagevec_init(struct pagevec * pvec)297f4dd379Sjsgpagevec_init(struct pagevec *pvec) 307f4dd379Sjsg { 317f4dd379Sjsg pvec->nr = 0; 327f4dd379Sjsg } 337f4dd379Sjsg 347f4dd379Sjsg static inline void pagevec_reinit(struct pagevec * pvec)357f4dd379Sjsgpagevec_reinit(struct pagevec *pvec) 367f4dd379Sjsg { 377f4dd379Sjsg pvec->nr = 0; 387f4dd379Sjsg } 397f4dd379Sjsg 407f4dd379Sjsg static inline unsigned int pagevec_count(struct pagevec * pvec)417f4dd379Sjsgpagevec_count(struct pagevec *pvec) 427f4dd379Sjsg { 437f4dd379Sjsg return pvec->nr; 447f4dd379Sjsg } 457f4dd379Sjsg 467f4dd379Sjsg static inline unsigned int pagevec_add(struct pagevec * pvec,struct vm_page * page)477f4dd379Sjsgpagevec_add(struct pagevec *pvec, struct vm_page *page) 487f4dd379Sjsg { 497f4dd379Sjsg pvec->pages[pvec->nr++] = page; 507f4dd379Sjsg return PAGEVEC_SIZE - pvec->nr; 517f4dd379Sjsg } 527f4dd379Sjsg 537f4dd379Sjsg #endif 54