Annotation of coherent/b/STREAMS/conf/streams/src/assert.c, revision 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.