SCCS-vsn: sys/vm/device_pager.c 8.5
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)device_pager.c 8.4 (Berkeley) %G%
+ * @(#)device_pager.c 8.5 (Berkeley) %G%
__P((caddr_t, vm_size_t, vm_prot_t, vm_offset_t));
static void dev_pager_dealloc __P((vm_pager_t));
static int dev_pager_getpage
__P((caddr_t, vm_size_t, vm_prot_t, vm_offset_t));
static void dev_pager_dealloc __P((vm_pager_t));
static int dev_pager_getpage
- __P((vm_pager_t, vm_page_t, boolean_t));
+ __P((vm_pager_t, vm_page_t *, int, boolean_t));
static boolean_t dev_pager_haspage __P((vm_pager_t, vm_offset_t));
static void dev_pager_init __P((void));
static int dev_pager_putpage
static boolean_t dev_pager_haspage __P((vm_pager_t, vm_offset_t));
static void dev_pager_init __P((void));
static int dev_pager_putpage
- __P((vm_pager_t, vm_page_t, boolean_t));
+ __P((vm_pager_t, vm_page_t *, int, boolean_t));
static vm_page_t dev_pager_getfake __P((vm_offset_t));
static void dev_pager_putfake __P((vm_page_t));
static vm_page_t dev_pager_getfake __P((vm_offset_t));
static void dev_pager_putfake __P((vm_page_t));
dev_pager_dealloc,
dev_pager_getpage,
dev_pager_putpage,
dev_pager_dealloc,
dev_pager_getpage,
dev_pager_putpage,
+ dev_pager_haspage,
+ vm_pager_clusternull
pager->pg_handle = handle;
pager->pg_ops = &devicepagerops;
pager->pg_type = PG_DEVICE;
pager->pg_handle = handle;
pager->pg_ops = &devicepagerops;
pager->pg_type = PG_DEVICE;
pager->pg_data = devp;
TAILQ_INIT(&devp->devp_pglist);
/*
pager->pg_data = devp;
TAILQ_INIT(&devp->devp_pglist);
/*
-dev_pager_getpage(pager, m, sync)
+dev_pager_getpage(pager, mlist, npages, sync)
+ vm_page_t *mlist;
+ int npages;
boolean_t sync;
{
register vm_object_t object;
boolean_t sync;
{
register vm_object_t object;
vm_page_t page;
dev_t dev;
int (*mapfunc)(), prot;
vm_page_t page;
dev_t dev;
int (*mapfunc)(), prot;
#ifdef DEBUG
if (dpagerdebug & DDB_FOLLOW)
#ifdef DEBUG
if (dpagerdebug & DDB_FOLLOW)
- printf("dev_pager_getpage(%x, %x)\n", pager, m);
+ printf("dev_pager_getpage(%x, %x, %x, %x)\n",
+ pager, mlist, npages, sync);
+ if (npages != 1)
+ panic("dev_pager_getpage: cannot handle multiple pages");
+ m = *mlist;
+
object = m->object;
dev = (dev_t)pager->pg_handle;
offset = m->offset + object->paging_offset;
object = m->object;
dev = (dev_t)pager->pg_handle;
offset = m->offset + object->paging_offset;
-dev_pager_putpage(pager, m, sync)
+dev_pager_putpage(pager, mlist, npages, sync)
+ vm_page_t *mlist;
+ int npages;
boolean_t sync;
{
#ifdef DEBUG
if (dpagerdebug & DDB_FOLLOW)
boolean_t sync;
{
#ifdef DEBUG
if (dpagerdebug & DDB_FOLLOW)
- printf("dev_pager_putpage(%x, %x)\n", pager, m);
+ printf("dev_pager_putpage(%x, %x, %x, %x)\n",
+ pager, mlist, npages, sync);
#endif
if (pager == NULL)
return;
#endif
if (pager == NULL)
return;