Annotation of coherent/d/PS2_KERNEL/coh.386/misc.c, revision 1.1.1.1

1.1       root        1: /* $Header: /kernel/kersrc/coh.386/RCS/misc.c,v 1.2 92/08/04 12:33:36 bin Exp Locker: bin $ */
                      2: /* (lgl-
                      3:  *     The information contained herein is a trade secret of Mark Williams
                      4:  *     Company, and  is confidential information.  It is provided  under a
                      5:  *     license agreement,  and may be  copied or disclosed  only under the
                      6:  *     terms of  that agreement.  Any  reproduction or disclosure  of this
                      7:  *     material without the express written authorization of Mark Williams
                      8:  *     Company or persuant to the license agreement is unlawful.
                      9:  *
                     10:  *     COHERENT Version 2.3.37
                     11:  *     Copyright (c) 1982, 1983, 1984.
                     12:  *     An unpublished work by Mark Williams Company, Chicago.
                     13:  *     All rights reserved.
                     14:  -lgl) */
                     15: /*
                     16:  * Coherent.
                     17:  * Miscellaneous routines.
                     18:  *
                     19:  * $Log:       misc.c,v $
                     20:  * Revision 1.2  92/08/04  12:33:36  bin
                     21:  * changed for ker 59
                     22:  * 
                     23:  * Revision 1.2  92/01/06  11:59:45  hal
                     24:  * Compile with cc.mwc.
                     25:  * 
                     26:  * Revision 1.1        88/03/24  16:14:01      src
                     27:  * Initial revision
                     28:  * 
                     29:  * 87/05/08    Allan Cornish           /usr/src/sys/coh/misc.c
                     30:  * System code and data segments no longer reported in panic messages.
                     31:  *
                     32:  * 87/02/17    Allan Cornish           /usr/src/sys/coh/misc.c
                     33:  * Panic message now includes system code and data segments.
                     34:  */
                     35: #include <sys/coherent.h>
                     36: #include <acct.h>
                     37: #include <errno.h>
                     38: #include <sys/ino.h>
                     39: #include <sys/stat.h>
                     40: 
                     41: #ifdef TRACER
                     42: extern unsigned t_piggy;
                     43: #endif
                     44: 
                     45: /*
                     46:  * Copy `n' bytes from `bp1' to `bp2'.
                     47:  */
                     48: kkcopy(bp1, bp2, n)
                     49: register char *bp1;
                     50: register char *bp2;
                     51: unsigned n;
                     52: {
                     53:        register unsigned n1;
                     54: 
                     55:        n1 = n;
                     56:        if (n1) {
                     57:                do {
                     58:                        *bp2++ = *bp1++;
                     59:                } while (--n1);
                     60:        }
                     61:        return (n);
                     62: }
                     63: 
                     64: /*
                     65:  * Clear the next `n' bytes starting at `bp'.
                     66:  */
                     67: kclear(bp, n)
                     68: register char *bp;
                     69: register unsigned n;
                     70: {
                     71:        if (n) {
                     72:                do {
                     73:                        *bp++ = 0;
                     74:                } while (--n);
                     75:        }
                     76: }
                     77: 
                     78: /*
                     79:  * Make sure we are the super user.
                     80:  */
                     81: super()
                     82: {
                     83:        if (u.u_uid) {
                     84:                u.u_error = EPERM;
                     85:                return (0);
                     86:        }
                     87:        u.u_flag |= ASU;
                     88:        return (1);
                     89: }
                     90: 
                     91: /*
                     92:  * Make sure we are the gived `uid' or the super user.
                     93:  */
                     94: owner(uid)
                     95: {
                     96:        if (u.u_uid == uid)
                     97:                return (1);
                     98:        if (u.u_uid == 0) {
                     99:                u.u_flag |= ASU;
                    100:                return (1);
                    101:        }
                    102:        u.u_error = EPERM;
                    103:        return (0);
                    104: }
                    105: 
                    106: /*
                    107:  * Panic.
                    108:  */
                    109: panic(a1)
                    110: char *a1;
                    111: {
                    112:        static panflag;
                    113:        sphi();
                    114: 
                    115: #ifdef TRACER
                    116:        if ( t_piggy & 0x80 ) {
                    117:                if (panflag++ == 0) {
                    118:                        printf("Panic: %r", &a1);
                    119:                        putchar('\n');
                    120:                        usync();
                    121:                }
                    122:                printf("relax! It really isn't so bad.\n");
                    123:        } else {
                    124:                if (panflag++ == 0) {
                    125:                        printf("Panic: %r", &a1);
                    126:                        putchar('\n');
                    127:                        for (;;);
                    128:                        usync();
                    129:                }
                    130:                halt();
                    131:        }
                    132: #else
                    133:        if (panflag++ == 0) {
                    134:                printf("Panic: %r", &a1);
                    135:                putchar('\n');
                    136:                for (;;);
                    137:                usync();
                    138:        }
                    139:        halt();
                    140: #endif /* TRACER */
                    141: 
                    142:        --panflag;
                    143: }
                    144: 
                    145: /*
                    146:  * Print a message from a device driver.
                    147:  */
                    148: devmsg(dev, a1)
                    149: dev_t dev;
                    150: char *a1;
                    151: {
                    152:        printf("(%d,%d): %r", major(dev), minor(dev), &a1);
                    153:        printf("\n");
                    154: }

unix.superglobalmegacorp.com

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