Annotation of sys/dev/raidframe/rf_general.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rf_general.h,v 1.6 2003/04/27 11:22:54 ho Exp $ */
2: /* $NetBSD: rf_general.h,v 1.5 2000/03/03 02:04:48 oster Exp $ */
3:
4: /*
5: * Copyright (c) 1995 Carnegie-Mellon University.
6: * All rights reserved.
7: *
8: * Author: Mark Holland
9: *
10: * Permission to use, copy, modify and distribute this software and
11: * its documentation is hereby granted, provided that both the copyright
12: * notice and this permission notice appear in all copies of the
13: * software, derivative works or modified versions, and any portions
14: * thereof, and that both notices appear in supporting documentation.
15: *
16: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
17: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
18: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19: *
20: * Carnegie Mellon requests users of this software to return to
21: *
22: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
23: * School of Computer Science
24: * Carnegie Mellon University
25: * Pittsburgh PA 15213-3890
26: *
27: * any improvements or extensions that they make and grant Carnegie the
28: * rights to redistribute these changes.
29: */
30:
31: /*
32: * rf_general.h -- Some general-use definitions.
33: */
34:
35: /*#define NOASSERT*/
36:
37: #ifndef _RF__RF_GENERAL_H_
38: #define _RF__RF_GENERAL_H_
39:
40: /* Error reporting and handling. */
41:
42: #ifdef _KERNEL
43: #include <sys/systm.h> /* printf, snprintf, and friends. */
44: #endif
45:
46: #define RF_ERRORMSG(s) printf((s))
47: #define RF_ERRORMSG1(s,a) printf((s), (a))
48: #define RF_ERRORMSG2(s,a,b) printf((s), (a), (b))
49: #define RF_ERRORMSG3(s,a,b,c) printf((s), (a), (b), (c))
50:
51: extern char rf_panicbuf[2048];
52: #define RF_PANIC() \
53: do { \
54: snprintf(rf_panicbuf, sizeof rf_panicbuf, \
55: "RAIDframe error at line %d file %s", \
56: __LINE__, __FILE__); \
57: panic(rf_panicbuf); \
58: } while (0)
59:
60: #ifdef _KERNEL
61: #ifdef RF_ASSERT
62: #undef RF_ASSERT
63: #endif /* RF_ASSERT */
64: #ifndef NOASSERT
65: #define RF_ASSERT(_x_) \
66: do { \
67: if (!(_x_)) { \
68: snprintf(rf_panicbuf, sizeof rf_panicbuf, \
69: "RAIDframe error at line %d" \
70: " file %s (failed asserting %s)\n", __LINE__, \
71: __FILE__, #_x_); \
72: panic(rf_panicbuf); \
73: } \
74: } while (0)
75: #else /* !NOASSERT */
76: #define RF_ASSERT(x) {/*noop*/}
77: #endif /* !NOASSERT */
78: #else /* _KERNEL */
79: #define RF_ASSERT(x) {/*noop*/}
80: #endif /* _KERNEL */
81:
82: /* Random stuff. */
83: #define RF_MAX(a,b) (((a) > (b)) ? (a) : (b))
84: #define RF_MIN(a,b) (((a) < (b)) ? (a) : (b))
85:
86: /* Divide-by-zero check. */
87: #define RF_DB0_CHECK(a,b) (((b)==0) ? 0 : (a)/(b))
88:
89: /* Get time of day. */
90: #define RF_GETTIME(_t) microtime(&(_t))
91:
92: /*
93: * Zero memory - Not all bzero calls go through here, only
94: * those which in the kernel may have a user address.
95: */
96:
97: #define RF_BZERO(_bp,_b,_l) bzero(_b, _l) /*
98: * XXX This is likely
99: * incorrect. GO
100: */
101:
102: #define RF_UL(x) ((unsigned long)(x))
103: #define RF_PGMASK RF_UL(NBPG-1)
104: #define RF_BLIP(x) (NBPG - (RF_UL(x) & RF_PGMASK)) /*
105: * Bytes left
106: * in page.
107: */
108: #define RF_PAGE_ALIGNED(x) ((RF_UL(x) & RF_PGMASK) == 0)
109:
110: #ifdef __STDC__
111: #define RF_STRING(_str_) #_str_
112: #else /* __STDC__ */
113: #define RF_STRING(_str_) "_str_"
114: #endif /* __STDC__ */
115:
116: #endif /* !_RF__RF_GENERAL_H_ */
CVSweb