Annotation of coherent/f/etc/conf/streams/src/_putput.c, revision 1.1

1.1     ! root        1: #define        _DDI_DKI        1
        !             2: #define        _SYSV4          1
        !             3: 
        !             4: /*
        !             5:  * Simple im-memory traceback buffer for kernel debugging.
        !             6:  *
        !             7:  * This module exists to service the DDI/DKI cmn_err () function, which takes
        !             8:  * care of details like locking. This function is a simple debugging output
        !             9:  * which logs characters to a wrap-around memory buffer that might be useful
        !            10:  * for post-mortem kernel debugging.
        !            11:  */
        !            12: 
        !            13: /*
        !            14:  *-IMPORTS:
        !            15:  *     <common/ccompat.h>
        !            16:  *             __USE_PROTO__
        !            17:  *             __ARGS ()
        !            18:  *     <common/xdebug.h>
        !            19:  *             __LOCAL__
        !            20:  */
        !            21: 
        !            22: #include <common/ccompat.h>
        !            23: #include <common/xdebug.h>
        !            24: 
        !            25: 
        !            26: #ifndef        DEBUG_BUF_SIZE
        !            27: #define        DEBUG_BUF_SIZE  1024
        !            28: #endif
        !            29: 
        !            30: 
        !            31: #define        SIGNATURE       "$PUTBUF:"
        !            32: 
        !            33: 
        !            34: /*
        !            35:  * Local state for the simple debug output.
        !            36:  */
        !            37: 
        !            38: __LOCAL__ struct {
        !            39:        unsigned char   signature [sizeof (SIGNATURE)];
        !            40:        unsigned        offset;
        !            41:        unsigned char   buffer [DEBUG_BUF_SIZE];
        !            42: } _putbuf = {
        !            43:        SIGNATURE
        !            44: };
        !            45: 
        !            46: 
        !            47: /*
        !            48:  *-STATUS:
        !            49:  *     Private to cmn_err ()
        !            50:  *
        !            51:  *-NAME:
        !            52:  *     _put_putbuf ()  simple post-mortem debugging output
        !            53:  *
        !            54:  *-ARGUMENTS:
        !            55:  *     outch           The character to record in the post-mortem traceback
        !            56:  *                     buffer.
        !            57:  *
        !            58:  *-DESCRIPTION:
        !            59:  *     This function provides system-specific debugging output support for
        !            60:  *     the DDI/DKI cnm_err () function, interfacing to a simple wraparound
        !            61:  *     traceback buffer.
        !            62:  *
        !            63:  *-NOTES:
        !            64:  *     This function does not sleep.
        !            65:  *
        !            66:  *     Driver-defined basic locks, read/write locks and sleep locks may
        !            67:  *     be held across calls to this function.
        !            68:  *
        !            69:  *     In systems where the contents of main memory are not usually
        !            70:  *     available after a crash and restart, the traceback memory may be
        !            71:  *     stored off-line (recorded through a serial port), or checkpointed
        !            72:  *     into memory not touched by the system boot process (such as network
        !            73:  *     adapter buffer memory). In such systems, the traceback output may
        !            74:  *     be "buffered" and only flushed when requested to record a '\n'
        !            75:  */
        !            76: 
        !            77: #if    __USE_PROTO__
        !            78: void (_put_putbuf) (unsigned char outch)
        !            79: #else
        !            80: void
        !            81: _put_putbuf __ARGS ((outch))
        !            82: unsigned char  outch;
        !            83: #endif
        !            84: {
        !            85:        _putbuf.buffer [_putbuf.offset] = outch;
        !            86:        _putbuf.offset = (_putbuf.offset + 1) % sizeof (_putbuf.buffer);
        !            87: }

unix.superglobalmegacorp.com

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