Annotation of coherent/f/etc/conf/streams/src/assert.c, revision 1.1.1.1

1.1       root        1: #define        _DDI_DKI        1
                      2: #define        _SYSV4          1
                      3: 
                      4: /*
                      5:  * This file contains the definition for the kernel assertion helper function
                      6:  * __assert_fail (), and a manual page for ASSERT ().
                      7:  */
                      8: 
                      9: /*
                     10:  *-IMPORTS:
                     11:  *     <common/ccompat.h>
                     12:  *             __USE_PROTO__
                     13:  *             __ARGS ()
                     14:  *     <sys/cmn_err.h>
                     15:  *             CE_PANIC
                     16:  *             cmn_err ()
                     17:  */
                     18: 
                     19: #include <common/ccompat.h>
                     20: #include <sys/cmn_err.h>
                     21: #include <stddef.h>
                     22: 
                     23: #include <sys/debug.h>
                     24: 
                     25: 
                     26: /*
                     27:  *-STATUS:
                     28:  *     DDI/DKI.
                     29:  *
                     30:  *-NAME:
                     31:  *     ASSERT ()               Verify assertion.
                     32:  *
                     33:  *-SYNOPSIS:
                     34:  *     #include <sys/debug.h>
                     35:  *
                     36:  *     void ASSERT (int expression);
                     37:  *
                     38:  *-ARGUMENTS:
                     39:  *     expression              Expression to be evaluated.
                     40:  *
                     41:  *-DESCRIPTION:
                     42:  *     ASSERT () is a debugging interface for verifying program invariants
                     43:  *     within code that is compiled with the DEBUG compilation option
                     44:  *     defined. "expression" is a boolean expression that the caller expects
                     45:  *     to evaluate to non-zero (that is, the caller is asserting that the
                     46:  *     expression has a non-zero value). If "expression" evaluates to non-
                     47:  *     zero, the ASSERT () call has no effect. If "expression" evaluates to
                     48:  *     zero, ASSERT () causes the system to panic with a message identifying
                     49:  *     the expression, the name of the source file containing the assertion,
                     50:  *     and the line number within the source file where the assertion is
                     51:  *     made.
                     52:  *
                     53:  *     When the DEBUG compilation option is not defined, ASSERT () calls are
                     54:  *     not compiled into the code, and therefore have no effect.
                     55:  *
                     56:  *-RETURN VALUE:
                     57:  *     If "expression" evaluates to non-zero, ASSERT () returns no value. If
                     58:  *     "expression" evaluates to zero, ASSERT () panics the system.
                     59:  *
                     60:  *-LEVEL:
                     61:  *     Base or interrupt.
                     62:  *
                     63:  *-NOTES:
                     64:  *     Does not sleep.
                     65:  *
                     66:  *     Driver-defined basic locks, read/write locks and sleep locks may be
                     67:  *     held across calls to this function.
                     68:  *
                     69:  *-SEE ALSO:
                     70:  *     cmn_err ()
                     71:  */
                     72: 
                     73: /*
                     74:  *-STATUS:
                     75:  *     Internal helper for ASSERT ().
                     76:  *
                     77:  *-NAME:
                     78:  *     __assert_fail ()        Report an assertion failure.
                     79:  *
                     80:  *-ARGUMENTS:
                     81:  *     exp     The text of the source code for the expression that ASSERT ()
                     82:  *             evaluated and found to be false.
                     83:  *
                     84:  *-DESCRIPTION:
                     85:  *     Like assert () in C programs, the ASSERT () macro within the kernel
                     86:  *     provides a simple debugging mechanism. It is good software engineering
                     87:  *     practice to check even those situations that "cannot happen", at least
                     88:  *     during the development phase(s) of a section of code. The assertion
                     89:  *     mechanisms provide a simple and inexpensive way of performing those
                     90:  *     checks that if they fail indicate some condition that indicates a
                     91:  *     bug in some code. Normally, the debugging statements are compiled to
                     92:  *     check the assertions, but at the developer's option all calls to the
                     93:  *     ASSERT () macro will instead expand to no code.
                     94:  *
                     95:  *     When the ASSERT () macro detects that an assertion condition did not
                     96:  *     evaluate to a logically true value (which in C is anything non-zero)
                     97:  *     then this helper function is called to halt the kernel with an
                     98:  *     appropriate error message.
                     99:  *
                    100:  *-RETURNS:
                    101:  *     Does not return.
                    102:  *
                    103:  *-LEVEL:
                    104:  *     Base or Interrupt.
                    105:  *
                    106:  *-NOTES:
                    107:  *     This function calls cmn_err () to panic the kernel on the CPU where
                    108:  *     the fault was detected (and to print the assertion failure message).
                    109:  */
                    110: 
                    111: #if    __USE_PROTO__
                    112: void (__assert_fail) (__CONST__ char * exp)
                    113: #else
                    114: void
                    115: __assert_fail __ARGS ((exp))
                    116: __CONST__ char * exp;
                    117: #endif
                    118: {
                    119:        cmn_err (CE_PANIC, "Assertion \"%s\" failed", exp);
                    120: }
                    121: 
                    122: 
                    123: /*
                    124:  *-STATUS:
                    125:  *     Internal helper for ASSERT ().
                    126:  *
                    127:  *-NAME:
                    128:  *     __assert_fail2 ()       Verbose form of __assert_fail ()
                    129:  *
                    130:  *-ARGUMENTS:
                    131:  *     exp     The text of the source code for the expression that ASSERT ()
                    132:  *             evaluated and found to be false.
                    133:  *
                    134:  *     info    Location information that aids in locating the source code
                    135:  *             which failed the assertion. There are various levels of
                    136:  *             detail that may be desired; see <common/xdebug.h> for more on
                    137:  *             selecting the contents of the __FILE_INFO__ macro.
                    138:  *
                    139:  *     lineno  Optional line number in the source file.
                    140:  *
                    141:  *-DESCRIPTION:
                    142:  *     Like assert () in C programs, the ASSERT () macro within the kernel
                    143:  *     provides a simple debugging mechanism. It is good software engineering
                    144:  *     practice to check even those situations that "cannot happen", at least
                    145:  *     during the development phase(s) of a section of code. The assertion
                    146:  *     mechanisms provide a simple and inexpensive way of performing those
                    147:  *     checks that if they fail indicate some condition that indicates a
                    148:  *     bug in some code. Normally, the debugging statements are compiled to
                    149:  *     check the assertions, but at the developer's option all calls to the
                    150:  *     ASSERT () macro will instead expand to no code.
                    151:  *
                    152:  *     When the ASSERT () macro detects that an assertion condition did not
                    153:  *     evaluate to a logically true value (which in C is anything non-zero)
                    154:  *     then this helper function is called to halt the kernel with an
                    155:  *     appropriate error message.
                    156:  *
                    157:  *-RETURNS:
                    158:  *     Does not return.
                    159:  *
                    160:  *-LEVEL:
                    161:  *     Base or Interrupt.
                    162:  *
                    163:  *-NOTES:
                    164:  *     This function calls cmn_err () to panic the kernel on the CPU where
                    165:  *     the fault was detected (and to print the assertion failure message).
                    166:  */
                    167: 
                    168: #if    __USE_PROTO__
                    169: void (__assert_fail2) (__CONST__ char * exp, __CONST__ char * info,
                    170:                       int lineno)
                    171: #else
                    172: void
                    173: __assert_fail2 __ARGS ((exp, info, lineno))
                    174: __CONST__ char * exp;
                    175: __CONST__ char * info;
                    176: int            lineno;
                    177: #endif
                    178: {
                    179:        cmn_err (CE_PANIC,
                    180:                 lineno == 0 ? "Assertion \"%s\" failed in %s" :
                    181:                               "Assertion \"%s\" failed in %s at line %d",
                    182:                 exp, info, lineno);
                    183: }

unix.superglobalmegacorp.com

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