xref: /openbsd-src/sys/dev/pci/drm/include/linux/pagevec.h (revision f005ef32267c16bdb134f0e9fa4477dbe07c263a)
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)237f4dd379Sjsg pagevec_space(struct pagevec *pvec)
247f4dd379Sjsg {
257f4dd379Sjsg 	return PAGEVEC_SIZE - pvec->nr;
267f4dd379Sjsg }
277f4dd379Sjsg 
287f4dd379Sjsg static inline void
pagevec_init(struct pagevec * pvec)297f4dd379Sjsg pagevec_init(struct pagevec *pvec)
307f4dd379Sjsg {
317f4dd379Sjsg 	pvec->nr = 0;
327f4dd379Sjsg }
337f4dd379Sjsg 
347f4dd379Sjsg static inline void
pagevec_reinit(struct pagevec * pvec)357f4dd379Sjsg pagevec_reinit(struct pagevec *pvec)
367f4dd379Sjsg {
377f4dd379Sjsg 	pvec->nr = 0;
387f4dd379Sjsg }
397f4dd379Sjsg 
407f4dd379Sjsg static inline unsigned int
pagevec_count(struct pagevec * pvec)417f4dd379Sjsg pagevec_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)477f4dd379Sjsg pagevec_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