|
|
researchv9-SUN3(old)
#ifndef lint
static char sccsid[] = "@(#)fbutil.c 1.1 86/02/03 Copyr 1985 Sun Micro";
#endif
/*
* Copyright (c) 1985 by Sun Microsystems, Inc.
*/
/*
* Frame buffer driver utilities.
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/dir.h"
#include "../h/user.h"
#include "../h/proc.h"
#include "../h/buf.h"
#include "../h/conf.h"
#include "../h/file.h"
#include "../machine/pte.h"
#include "../machine/mmu.h"
#include "../sundev/mbvar.h"
fbopen(dev, flag, numdevs, mb_devs)
dev_t dev;
int flag, numdevs;
struct mb_device **mb_devs;
{
register int unit = minor(dev);
struct mb_device *mb_dev = *(mb_devs+unit);
if (unit >= numdevs || mb_dev == 0 || mb_dev->md_alive == 0)
u.u_error = ENXIO;
}
/*
* Call intclear to turn off interrupts on all alive devices.
* If intclear returns non-zero value then know that found an interrupting
* device.
*/
int
fbintr(numdevs, mb_devs, intclear)
int numdevs;
struct mb_device **mb_devs;
int (*intclear)();
{
register int i;
register struct mb_device *md;
for (i = 0; i < numdevs; i++) {
if ((md = *(mb_devs+i)) == NULL)
continue;
if (!md->md_alive)
continue;
if ((*intclear)(md->md_addr))
return (1);
}
return (0);
}
/*ARGSUSED*/
int
fbmmap(dev, off, prot, numdevs, mb_devs, size)
dev_t dev;
off_t off;
int prot;
int numdevs;
struct mb_device **mb_devs;
int size;
{
struct mb_device *mb_dev = *(mb_devs+minor(dev));
register int page;
if (off >= size)
return (-1);
page = getkpgmap(mb_dev->md_addr + off) & PG_PFNUM;
return (page);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.