Annotation of coherent/b/STREAMS/conf_79/mtune.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *-IMPORTS:
                      3:  *     <sys/compat.h>
                      4:  *             CONST
                      5:  *             LOCAL
                      6:  *             USE_PROTO
                      7:  *             ARGS ()
                      8:  *     <stdlib.h>
                      9:  *             NULL
                     10:  *             malloc ()
                     11:  *             free ()
                     12:  */
                     13: 
                     14: #include <sys/compat.h>
                     15: #include <stdlib.h>
                     16: 
                     17: #include "ehand.h"
                     18: #include "symbol.h"
                     19: #include "read.h"
                     20: 
                     21: #include "mtune.h"
                     22: 
                     23: LOCAL mtune_t *        _mtunes;
                     24: 
                     25: 
                     26: /*
                     27:  * Locate a parameter definition by symbol.
                     28:  */
                     29: 
                     30: #ifdef USE_PROTO
                     31: mtune_t * (find_mtune) (symbol_t * sym)
                     32: #else
                     33: mtune_t *
                     34: find_mtune ARGS ((sym))
                     35: symbol_t      *        sym;
                     36: #endif
                     37: {
                     38:        mtune_t       * scan;
                     39: 
                     40:        for (scan = _mtunes ; scan != NULL ; scan = scan->mt_next) {
                     41: 
                     42:                if (scan->mt_name == sym)
                     43:                        return scan;
                     44:        }
                     45: 
                     46:        return NULL;
                     47: }
                     48: 
                     49: 
                     50: /*
                     51:  * Read lines from an "mtune" file.
                     52:  */
                     53: 
                     54: #ifdef USE_PROTO
                     55: LOCAL int (read_mtune) (input_t * input, lex_t * lexp)
                     56: #else
                     57: LOCAL int
                     58: read_mtune ARGS ((input, lexp))
                     59: input_t              * input;
                     60: lex_t        * lexp;
                     61: #endif
                     62: {
                     63:        int             ch = '\n';
                     64:        mtune_t       * mtunep;
                     65:        ehand_t         err;
                     66: 
                     67:        if ((mtunep = (mtune_t *) malloc (sizeof (* mtunep))) == NULL)
                     68:                throw_error ("out of memory in read_mtune ()");
                     69: 
                     70:        if (PUSH_HANDLER (err) == 0) {
                     71:                /*
                     72:                 * If the first thing on the line works out to be an EOF,
                     73:                 * then bail out without an error.
                     74:                 */
                     75: 
                     76:                ch = read_symbol (input, lexp, & mtunep->mt_name);
                     77: 
                     78:                if (mtunep->mt_name == NULL) {
                     79:                        /*
                     80:                         * We allow an EOF at the beginning of a line and we
                     81:                         * also allow a blank line.
                     82:                         */
                     83: 
                     84:                        goto at_eof;
                     85:                }
                     86:                check_not_eol (ch);
                     87: 
                     88:                if (mtunep->mt_name->s_size > MAX_PARAMNAME)
                     89:                        throw_error ("parameter name must be <= %d characters",
                     90:                                     MAX_PARAMNAME);
                     91: 
                     92:                if (find_mtune (mtunep->mt_name) != NULL)
                     93:                        throw_error ("parameter name must be unique");
                     94: 
                     95:                /*
                     96:                 * Pull in the parameter values
                     97:                 */
                     98: 
                     99:                ch = read_longs (input, lexp, & mtunep->mt_min, NO_RANGE);
                    100:                check_not_eol (ch);
                    101: 
                    102:                ch = read_longs (input, lexp, & mtunep->mt_default, NO_RANGE);
                    103:                check_not_eol (ch);
                    104: 
                    105:                ch = read_longs (input, lexp, & mtunep->mt_max, NO_RANGE);
                    106:                ch = expect_eol (input, lexp, ch);
                    107: 
                    108: 
                    109:                /*
                    110:                 * Having passed all the reasonableness checks, we link the
                    111:                 * new entry into the chain.
                    112:                 */
                    113: 
                    114:                mtunep->mt_stune = NULL;
                    115: 
                    116:                mtunep->mt_next = _mtunes;
                    117:                _mtunes = mtunep;
                    118:        } else {
                    119: 
                    120:                free (mtunep);
                    121:                CHAIN_ERROR (err);
                    122:        }
                    123: 
                    124: at_eof:
                    125:        POP_HANDLER (err);
                    126:        return ch;
                    127: }
                    128: 
                    129: 
                    130: #if 0
                    131: /*
                    132:  * Regenerate an 'mtune' line from the stored record.
                    133:  */
                    134: 
                    135: #ifdef USE_PROTO
                    136: void (write_mtune) (mtune_t * mtunep, FILE * out)
                    137: #else
                    138: void
                    139: write_mtune ARGS ((mtunep, out))
                    140: mtune_t              * mtunep;
                    141: FILE         * out;
                    142: #endif
                    143: {
                    144:        (void) fprintf (out, "%-8s %-7ld %-7ld %-7ld\n",
                    145:                        mtunep->mt_name->s_data,
                    146:                        mtunep->mt_min, mtunep->mt_default,
                    147:                        mtunep->mt_max);
                    148: }
                    149: #endif
                    150: 
                    151: 
                    152: /*
                    153:  * Return the head of the list of all tuneable parameters.
                    154:  */
                    155: 
                    156: #ifdef USE_PROTO
                    157: mtune_t * (mtunes) (void)
                    158: #else
                    159: mtune_t *
                    160: mtunes ARGS (())
                    161: #endif
                    162: {
                    163:        return _mtunes;
                    164: }
                    165: 
                    166: 
                    167: /*
                    168:  * Suck in a complete 'mtune' file.
                    169:  */
                    170: 
                    171: #ifdef USE_PROTO
                    172: void (read_mtune_file) (CONST char * name)
                    173: #else
                    174: void
                    175: read_mtune_file ARGS ((name))
                    176: CONST char    *        name;
                    177: #endif
                    178: {
                    179:        read_dev_file (name, read_mtune);
                    180: }

unix.superglobalmegacorp.com

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