|
|
1.1 ! root 1: /* $Header: /newbits/286_KERNEL/USRSRC/coh/RCS/misc.c,v 1.1 92/01/09 13:28:55 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.1 92/01/09 13:28:55 bin ! 21: * Initial revision ! 22: * ! 23: * Revision 1.1 88/03/24 16:14:01 src ! 24: * Initial revision ! 25: * ! 26: * 87/05/08 Allan Cornish /usr/src/sys/coh/misc.c ! 27: * System code and data segments no longer reported in panic messages. ! 28: * ! 29: * 87/02/17 Allan Cornish /usr/src/sys/coh/misc.c ! 30: * Panic message now includes system code and data segments. ! 31: */ ! 32: #include <sys/coherent.h> ! 33: #include <acct.h> ! 34: #include <errno.h> ! 35: #include <sys/ino.h> ! 36: #include <sys/stat.h> ! 37: #include <sys/uproc.h> ! 38: ! 39: /* ! 40: * Copy `n' bytes from `bp1' to `bp2'. ! 41: */ ! 42: kkcopy(bp1, bp2, n) ! 43: register char *bp1; ! 44: register char *bp2; ! 45: unsigned n; ! 46: { ! 47: register unsigned n1; ! 48: ! 49: n1 = n; ! 50: if (n1) { ! 51: do { ! 52: *bp2++ = *bp1++; ! 53: } while (--n1); ! 54: } ! 55: return (n); ! 56: } ! 57: ! 58: /* ! 59: * Clear the next `n' bytes starting at `bp'. ! 60: */ ! 61: kclear(bp, n) ! 62: register char *bp; ! 63: register unsigned n; ! 64: { ! 65: if (n) { ! 66: do { ! 67: *bp++ = 0; ! 68: } while (--n); ! 69: } ! 70: } ! 71: ! 72: /* ! 73: * Make sure we are the super user. ! 74: */ ! 75: super() ! 76: { ! 77: if (u.u_uid) { ! 78: u.u_error = EPERM; ! 79: return (0); ! 80: } ! 81: u.u_flag |= ASU; ! 82: return (1); ! 83: } ! 84: ! 85: /* ! 86: * Make sure we are the gived `uid' or the super user. ! 87: */ ! 88: owner(uid) ! 89: { ! 90: if (u.u_uid == uid) ! 91: return (1); ! 92: if (u.u_uid == 0) { ! 93: u.u_flag |= ASU; ! 94: return (1); ! 95: } ! 96: u.u_error = EPERM; ! 97: return (0); ! 98: } ! 99: ! 100: /* ! 101: * Panic. ! 102: */ ! 103: panic(a1) ! 104: char *a1; ! 105: { ! 106: static panflag; ! 107: ! 108: if (panflag++ == 0) { ! 109: printf("Panic: %r", &a1); ! 110: putchar('\n'); ! 111: usync(); ! 112: } ! 113: halt(); ! 114: --panflag; ! 115: } ! 116: ! 117: /* ! 118: * Print a message from a device driver. ! 119: */ ! 120: devmsg(dev, a1) ! 121: dev_t dev; ! 122: char *a1; ! 123: { ! 124: printf("(%d,%d): %r", major(dev), minor(dev), &a1); ! 125: printf("\n"); ! 126: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.