Annotation of researchv9/sys/sundev/fbutil.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static  char sccsid[] = "@(#)fbutil.c 1.1 86/02/03 Copyr 1985 Sun Micro";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  * Copyright (c) 1985 by Sun Microsystems, Inc.
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  * Frame buffer driver utilities.
        !            11:  */
        !            12: 
        !            13: #include "../h/param.h"
        !            14: #include "../h/systm.h"
        !            15: #include "../h/dir.h"
        !            16: #include "../h/user.h"
        !            17: #include "../h/proc.h"
        !            18: #include "../h/buf.h"
        !            19: #include "../h/conf.h"
        !            20: #include "../h/file.h"
        !            21: #include "../machine/pte.h"
        !            22: #include "../machine/mmu.h"
        !            23: #include "../sundev/mbvar.h"
        !            24: 
        !            25: fbopen(dev, flag, numdevs, mb_devs)
        !            26:        dev_t   dev;
        !            27:        int     flag, numdevs;
        !            28:        struct  mb_device **mb_devs;
        !            29: {
        !            30:        register int unit = minor(dev);
        !            31:        struct  mb_device *mb_dev = *(mb_devs+unit);
        !            32: 
        !            33:        if (unit >= numdevs || mb_dev == 0 || mb_dev->md_alive == 0)
        !            34:                u.u_error = ENXIO;
        !            35: }
        !            36: 
        !            37: /*
        !            38:  * Call intclear to turn off interrupts on all alive devices.
        !            39:  * If intclear returns non-zero value then know that found an interrupting
        !            40:  * device.
        !            41:  */
        !            42: int
        !            43: fbintr(numdevs, mb_devs, intclear)
        !            44:        int     numdevs;
        !            45:        struct  mb_device **mb_devs;
        !            46:        int     (*intclear)();
        !            47: {
        !            48:        register int i;
        !            49:        register struct mb_device *md;
        !            50: 
        !            51:        for (i = 0; i < numdevs; i++) {
        !            52:                if ((md = *(mb_devs+i)) == NULL)
        !            53:                        continue;
        !            54:                if (!md->md_alive)
        !            55:                        continue;
        !            56:                if ((*intclear)(md->md_addr))
        !            57:                        return (1);
        !            58:        }
        !            59:        return (0);
        !            60: }
        !            61: 
        !            62: /*ARGSUSED*/
        !            63: int
        !            64: fbmmap(dev, off, prot, numdevs, mb_devs, size)
        !            65:        dev_t   dev;
        !            66:        off_t   off;
        !            67:        int     prot;
        !            68:        int     numdevs;
        !            69:        struct  mb_device **mb_devs;
        !            70:        int     size;
        !            71: {
        !            72:        struct  mb_device *mb_dev = *(mb_devs+minor(dev));
        !            73:        register int page;
        !            74: 
        !            75:        if (off >= size)
        !            76:                return (-1);
        !            77:        page = getkpgmap(mb_dev->md_addr + off) & PG_PFNUM;
        !            78:        return (page);
        !            79: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.