Annotation of 43BSD/ingres/source/dbu/sysmon.c, revision 1.1.1.1

1.1       root        1: # include      <ingres.h>
                      2: # include      <version.h>
                      3: # include      <opsys.h>
                      4: # include      <pv.h>
                      5: # include      <func.h>
                      6: # include      <signal.h>
                      7: # include      <pipes.h>
                      8: # include      <setjmp.h>
                      9: # include      <sccs.h>
                     10: # include      <symbol.h>
                     11: 
                     12: /*
                     13: **     SYSTTYMON - 
                     14: **             sets up the pipe block for the sysmod function,
                     15: **             and passed the -R flags in the parmvector.
                     16: **
                     17: **             note: this is kludged in the same way that the
                     18: **                     ingres monitor is-- there is no systm_mon.
                     19: **                     all work is done in systm_init.
                     20: **
                     21: **     SCCSID @(#)sysmon.c     8.1     12/31/84
                     22: */
                     23: 
                     24: 
                     25: 
                     26: 
                     27: extern         systm_mon();
                     28: extern         systm_init();
                     29: short          tTsysttymon[100];
                     30: PARM           pv[PV_MAXPC+ 1];
                     31: int            pc;
                     32: extern jmp_buf  CmReset;
                     33: 
                     34: struct fn_def  SysTtyMonFn =
                     35: {
                     36:        "SYSMONITOR",
                     37:        systm_mon,
                     38:        systm_init,
                     39:        NULL,
                     40:        NULL,
                     41:        0,
                     42:        tTsysttymon,
                     43:        100,
                     44:        'S',
                     45:        0
                     46: };
                     47: 
                     48: systm_init(argc, argv)
                     49: int    argc;
                     50: char   *argv[];
                     51: {
                     52:        pb_t            pb;
                     53:        char            **p;
                     54:        char            *pp;
                     55: 
                     56:        /*
                     57:        **      THIS CODE IS A CLUDGE!!!
                     58:        **
                     59:        **      all work is done in the init function 
                     60:        **      so that the sysmonitor will have control
                     61:        **      before the sysmod function.
                     62:        */
                     63: 
                     64:        setjmp(CmReset);
                     65: 
                     66:        /* arrange to call the sysfunc */
                     67:        for ( p = &argv[6]; (pp = *p) != NULL; p++)
                     68:        {
                     69:                pp = *p;
                     70:                if (pp[1] == 'S')
                     71:                        continue;
                     72:                syssetp(PV_STR, pp);
                     73:        }
                     74:        call_setup(&pb, mdSYSFUNC, NULL);
                     75:        pb_prime(&pb, PB_REG);
                     76:        pb.pb_proc = 1;         /**** SYSFUNC MUST BE IN PROC ONE ****/
                     77:        send_off(&pb, pc, pv);
                     78:        pb_tput(PV_EOF, "", 0, &pb);
                     79:        pb_flush(&pb);
                     80: 
                     81:        /* wait for the response */
                     82:        readinput(&pb);
                     83:        resetp();
                     84:        exit();
                     85: }
                     86: /*
                     87: **  SYSSETP -- set parameter
                     88: **
                     89: **     Sets a parameter, to be later sent by 'call' to whomever.
                     90: **     This looks suspiciously like ctlmod/setp.c, except
                     91: **     it sets a local pc and pv, and doesnt need to know anything
                     92: **     about the Ctx struct.
                     93: **
                     94: **     Parameters:
                     95: **             type -- parameter type.
                     96: **                     PV_STRING -- a string, 'len' is ignored.
                     97: **                     PV_INT -- an integer, 'len' is ignored.
                     98: **             val -- the value (real value if PV_INT, pointer
                     99: **                     otherwise).
                    100: **             len -- the length of the tuple.
                    101: **
                    102: **     Returns:
                    103: **             none
                    104: **
                    105: **             Adjusts pc & pv.
                    106: **
                    107: */
                    108: 
                    109: syssetp(type, val, len)
                    110: register int   type;
                    111: char           *val;
                    112: register int   len;
                    113: {
                    114:        PARM    *pp;
                    115:        char    *newp;
                    116:        extern char     *need();
                    117:        char    *buf;
                    118: 
                    119:        /*
                    120:        **  Check the magic bounds.
                    121:        */
                    122: 
                    123:        pp = &pv[pc++];
                    124: 
                    125:        /*
                    126:        **  Figure out the length from the type.
                    127:        */
                    128: 
                    129:        switch (type)
                    130:        {
                    131:          case PV_STR:
                    132:                len = length(val) + 1;
                    133:                newp = need(Qbuf, len);
                    134:                bmove(val, newp, len);
                    135:                buf = newp;
                    136:                pp->pv_val.pv_str = newp;
                    137:                break;
                    138:        
                    139:          case PV_INT:
                    140:                len = sizeof (short);
                    141:                pp->pv_val.pv_int = (int) val;
                    142:                break;
                    143: 
                    144:        
                    145:          default:
                    146:                syserr("syssetp: type %d", type);
                    147:        }
                    148: 
                    149:        /*
                    150:        **  Set up the parameter.
                    151:        */
                    152: 
                    153:        pp->pv_type = type;
                    154:        pp->pv_len = len;
                    155: 
                    156: # ifdef xSTR1
                    157:        if tTf(0,0)
                    158:        {
                    159:                lprintf("syssetp: ");
                    160:                pr_parm(pp);
                    161:        }
                    162: # endif
                    163: }
                    164: /*
                    165: **  SYSTM_MON -- "function to implement this module"
                    166: **
                    167: **     Since we have cludged up this module to work, and hence
                    168: **     the init routine should never return, this routine just
                    169: **     syserr's.
                    170: */
                    171: 
                    172: systm_mon()
                    173: {
                    174:        syserr("systm_mon");
                    175: }
                    176: /*
                    177: **  ACC_INIT, PAGEFLUSH -- dummy access method routines
                    178: **
                    179: **     Since the CM wants to do some basic access method functions,
                    180: **     we will let it.
                    181: */
                    182: 
                    183: acc_init()
                    184: {
                    185: }
                    186: 
                    187: pageflush(x)
                    188: char   *x;
                    189: {
                    190:        return (0);
                    191: }
                    192: /*
                    193: **  CLOSECATALOG -- dummy catalog close routine.
                    194: **
                    195: **     To keep from loading access methods.
                    196: */
                    197: 
                    198: closecatalog()
                    199: {
                    200: }
                    201: 
                    202: 
                    203: /*
                    204: **  GET FLAG
                    205: **
                    206: */
                    207: 
                    208: getflag(argv, dest)    /* need some data structure to hold the flags */
                    209: char   **argv;
                    210: char   **dest;
                    211: {
                    212:        int             destctr;
                    213:        int             i;
                    214: 
                    215:        destctr = 0;
                    216:        for (i = 0; i <= 6; i++)
                    217:        {
                    218:                if (argv[i][0] != NULL)
                    219:                        strcpy( dest[destctr++], argv[i]);
                    220:                else
                    221:                        return(0);
                    222:        }
                    223:        return(0);
                    224: }

unix.superglobalmegacorp.com

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