|
|
1.1 root 1: /* $Header: /kernel/kersrc/coh.286/RCS/misc.c,v 1.1 92/07/17 15:18:09 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/07/17 15:18:09 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:
38: /*
39: * Copy `n' bytes from `bp1' to `bp2'.
40: */
41: kkcopy(bp1, bp2, n)
42: register char *bp1;
43: register char *bp2;
44: unsigned n;
45: {
46: register unsigned n1;
47:
48: n1 = n;
49: if (n1) {
50: do {
51: *bp2++ = *bp1++;
52: } while (--n1);
53: }
54: return (n);
55: }
56:
57: /*
58: * Clear the next `n' bytes starting at `bp'.
59: */
60: kclear(bp, n)
61: register char *bp;
62: register unsigned n;
63: {
64: if (n) {
65: do {
66: *bp++ = 0;
67: } while (--n);
68: }
69: }
70:
71: /*
72: * Make sure we are the super user.
73: */
74: super()
75: {
76: if (u.u_uid) {
77: u.u_error = EPERM;
78: return (0);
79: }
80: u.u_flag |= ASU;
81: return (1);
82: }
83:
84: /*
85: * Make sure we are the gived `uid' or the super user.
86: */
87: owner(uid)
88: {
89: if (u.u_uid == uid)
90: return (1);
91: if (u.u_uid == 0) {
92: u.u_flag |= ASU;
93: return (1);
94: }
95: u.u_error = EPERM;
96: return (0);
97: }
98:
99: /*
100: * Panic.
101: */
102: panic(a1)
103: char *a1;
104: {
105: static panflag;
106:
107: if (panflag++ == 0) {
108: printf("Panic: %r", &a1);
109: putchar('\n');
110: usync();
111: }
112: halt();
113: --panflag;
114: }
115:
116: /*
117: * Print a message from a device driver.
118: */
119: devmsg(dev, a1)
120: dev_t dev;
121: char *a1;
122: {
123: printf("(%d,%d): %r", major(dev), minor(dev), &a1);
124: printf("\n");
125: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.