/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_PAGE_REPORTING_H
#define _LINUX_PAGE_REPORTING_H

#include <linux/mmzone.h>
#include <linux/scatterlist.h>
#include <linux/orbvm.h>


#define PAGE_REPORTING_CAPACITY		FPR_CAPACITY

struct page_reporting_dev_info {
	
	int (*report)(struct page_reporting_dev_info *prdev,
		      prdesc_t *descs, size_t nr_descs);

	
	struct delayed_work work;

	
	atomic_t state;

	
	unsigned int order;

	// to make sense of order, host needs to be given the page size
	size_t nr_descs;
	prdesc_t descs[PAGE_REPORTING_CAPACITY];
};


void page_reporting_unregister(struct page_reporting_dev_info *prdev);
int page_reporting_register(struct page_reporting_dev_info *prdev);
#endif 
