Annotation of researchv9/jerq/sgs/libsdp/audit.c, revision 1.1.1.1

1.1       root        1: static char ID[] = "@(#) audit.c: 1.1 3/16/82";
                      2: #include <stdio.h>
                      3: #include "sdp.h"
                      4: #include "define3.h"
                      5: 
                      6: #ifdef SHORT
                      7: #define        AU01    "AU01 "
                      8: #define        AU02    "AU02 "
                      9: #define        AU03    "AU03 "
                     10: #define        AU04    "AU04 "
                     11: #define        AUAU    "AUAU "
                     12: #else
                     13: #define AU01   "%s","AU01 -- audit failure in global hash\n"
                     14: #define AU02   "%s","AU02 -- audit failure in space hash\n"
                     15: #define AU03   "%s","AU03 -- audit failure in environment hash\n"
                     16: #define AU04   "%s","AU04 -- audit failure in manager hash\n"
                     17: #define AUAU   "%s","AUAU -- audit failed in sdp_audit\n"
                     18: #endif
                     19: 
                     20: #define PROLOG         if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\
                     21:                                ERR_RET(AUAU,ERROR)
                     22: #define EPILOG         if(aud_flag == AUDITON)\
                     23:                                aud_set() ;\
                     24:                        if(hist_fp != NULL)\
                     25:                                fprintf(hist_fp,"AU\t%d\n",mode) ;
                     26: #define RADIX  109
                     27: 
                     28: extern int aud_flag ;
                     29: extern long compatible ;
                     30: extern long gl1_hash ;
                     31: extern long gl2_hash ;
                     32: extern struct ENVIRON *first_environ ;
                     33: extern struct SPACE *first_space ;
                     34: extern int Gnumbfile ;
                     35: extern int Gln_file[] ;
                     36: extern int Gnumbstax ;
                     37: extern int Gsz_stax[] ;
                     38: extern FILE *hist_fp ;
                     39: extern ITEMID *known_idptr ;
                     40: extern struct LIBFILE lib_file ;
                     41: extern struct LIBMEM lib_mem ;
                     42: 
                     43: int                                    /* SUCCESS or ERROR */
                     44: sdp_audit(mode)
                     45: int mode ;
                     46: {
                     47: #ifndef SWEET
                     48: 
                     49:        PROLOG
                     50:        switch(mode)
                     51:        {
                     52:                case AUDITNOW:
                     53:                        break ;
                     54: 
                     55:                case AUDITOFF:
                     56:                        aud_flag = AUDITOFF ;
                     57:                        aud_reset() ;
                     58:                        break ;
                     59: 
                     60:                case AUDITON:
                     61:                        aud_flag = AUDITON ;
                     62:                        break ;
                     63:        }
                     64:        EPILOG
                     65:        return(SUCCESS) ;
                     66: #endif
                     67: }
                     68: aud_set()
                     69: {
                     70: #ifndef SWEET
                     71:        struct SPACE *i ;
                     72:        struct ENVIRON *j ;
                     73:        int k ;
                     74:        long hash1_gl(), hash2_gl(), hash1_sp(), hash2_sp(), hash_en(), hash_mn() ;
                     75: 
                     76:        gl1_hash = hash1_gl() ;
                     77:        gl2_hash = hash2_gl() ;
                     78: 
                     79:        for(i=first_space; i!=NULL; i=i->next_space)
                     80:        {
                     81:                i->sp1_hash = hash1_sp(i) ;
                     82:                i->sp2_hash = hash2_sp(i) ;
                     83:        }
                     84: 
                     85:        for(j=first_environ; j!=NULL; j=j->next_environ)
                     86:        {
                     87:                j->en_hash = hash_en(j) ;
                     88:                for(k=0; k<=j->num_frames; k++)
                     89:                        (j->manp[k]).mn_hash = hash_mn(&(j->manp[k])) ;
                     90:        }
                     91: #endif
                     92: }
                     93: int                                    /* SUCCESS or ERROR */
                     94: aud_check()
                     95: {
                     96: #ifndef SWEET
                     97:        struct SPACE *i ;
                     98:        struct ENVIRON *j ;
                     99:        int k ;
                    100:        long hash1_gl(), hash2_gl(), hash1_sp(), hash2_sp(), hash_en(), hash_mn() ;
                    101: 
                    102:        if( gl1_hash != hash1_gl()
                    103:         || gl2_hash != hash2_gl() )
                    104:                ERR_RET(AU01,ERROR)
                    105: 
                    106:        for(i=first_space; i!=NULL; i=i->next_space)
                    107:                if( i->sp1_hash != hash1_sp(i)
                    108:                 || i->sp2_hash != hash2_sp(i) )
                    109:                        ERR_RET(AU02,ERROR)
                    110: 
                    111:        for(j=first_environ; j!=NULL; j=j->next_environ)
                    112:        {
                    113:                if( j->en_hash != hash_en(j) )
                    114:                        ERR_RET(AU03,ERROR)
                    115:                for(k=0; k<=j->num_frames; k++)
                    116:                        if( (j->manp[k]).mn_hash != hash_mn(&(j->manp[k])) )
                    117:                                ERR_RET(AU04,ERROR)
                    118:        }
                    119:        return(SUCCESS) ;
                    120: #endif
                    121: }
                    122: 
                    123: #ifndef SWEET
                    124: aud_reset()
                    125: {
                    126: 
                    127:        struct SPACE *i ;
                    128:        struct ENVIRON *j ;
                    129:        int k ;
                    130: 
                    131:        gl1_hash = HASHNULL ;
                    132:        gl2_hash = HASHNULL ;
                    133: 
                    134:        for(i=first_space; i!=NULL; i=i->next_space)
                    135:        {
                    136:                i->sp1_hash = HASHNULL ;
                    137:                i->sp2_hash = HASHNULL ;
                    138:        }
                    139: 
                    140:        for(j=first_environ; j!=NULL; j=j->next_environ)
                    141:        {
                    142:                j->en_hash = HASHNULL ;
                    143:                for(k=0; k<j->num_frames; k++)
                    144:                        (j->manp)[k].mn_hash = HASHNULL ;
                    145:        }
                    146: }
                    147: long                                   /* hash value */
                    148: hash1_gl()
                    149: {
                    150:        register long   value ;
                    151: 
                    152:        value = (long)first_environ ;
                    153:        value *= RADIX ;
                    154:        value += (long)first_space ;
                    155:        value *= RADIX ;
                    156:        value += compatible ;
                    157:        value *= RADIX ;
                    158:        value += (long)Gnumbfile ;
                    159:        value *= RADIX ;
                    160:        value += (long)Gnumbstax ;
                    161:        value *= RADIX ;
                    162:        value += (long)hist_fp ;
                    163:        value *= RADIX ;
                    164:        value += (long)aud_flag ;
                    165:        value *= RADIX ;
                    166:        value += (long)known_idptr ;
                    167:        value *= RADIX ;
                    168:        value += (long)lib_file.libbuildname ;
                    169:        value *= RADIX ;
                    170:        value += (long)lib_file.libclose ;
                    171:        value *= RADIX ;
                    172:        value += (long)lib_file.libcreate ;
                    173:        value *= RADIX ;
                    174:        value += (long)lib_file.libopen ;
                    175:        value *= RADIX ;
                    176:        value += (long)lib_file.libread ;
                    177:        value *= RADIX ;
                    178:        value += (long)lib_file.libseek ;
                    179:        value *= RADIX ;
                    180:        value += (long)lib_file.libunlink ;
                    181:        value *= RADIX ;
                    182:        value += (long)lib_file.libwrite ;
                    183:        value *= RADIX ;
                    184:        value += (long)lib_mem.liballoc ;
                    185:        value *= RADIX ;
                    186:        value += (long)lib_mem.libfree ;
                    187:        return(value) ;
                    188: }
                    189: 
                    190: long                                   /* hash value */
                    191: hash2_gl()
                    192: {
                    193:        register long   value ;
                    194:        register int    i ;
                    195: 
                    196:        value = 0 ;
                    197:        for(i=0; i<Gnumbfile; i++)
                    198:        {
                    199:                value *= RADIX ;
                    200:                value += Gln_file[i] ;
                    201:        }
                    202:        for(i=0; i<Gnumbstax; i++)
                    203:        {
                    204:                value *= RADIX ;
                    205:                value += Gsz_stax[i] ;
                    206:        }
                    207:        return(value) ;
                    208: }
                    209: long                                   /* hash value */
                    210: hash_en(env)
                    211: struct ENVIRON *env ;
                    212: {
                    213:        register long   value ;
                    214: 
                    215:        value = (long)env->num_frames ;
                    216:        value *= RADIX ;
                    217:        value += (long)env->frame_size ;
                    218:        value *= RADIX ;
                    219:        value += (long)env->cnct_count ;
                    220:        value *= RADIX ;
                    221:        value += (long)env->manp ;
                    222:        value *= RADIX ;
                    223:        value += (long)env->empties ;
                    224:        value *= RADIX ;
                    225:        value += (long)env->next_environ ;
                    226:        value *= RADIX ;
                    227:        value += env->stats.uses ;
                    228:        value *= RADIX ;
                    229:        value += env->stats.faults ;
                    230:        value *= RADIX ;
                    231:        value += env->stats.writes ;
                    232:        value *= RADIX ;
                    233:        value += (long)env->stats.maxuse ;
                    234:        value *= RADIX ;
                    235:        value += (long)env->stats.curuse ;
                    236:        return(value) ;
                    237: }
                    238: long                                   /* hash value */
                    239: hash1_sp(sp)
                    240: struct SPACE *sp ;
                    241: {
                    242:        register long   value ;
                    243: 
                    244:        value = sp->version ;
                    245:        value *= RADIX ;
                    246:        value += (long)sp->page_size ;
                    247:        value *= RADIX ;
                    248:        value += sp->maxpage ;
                    249:        value *= RADIX ;
                    250:        value += sp->curpage ;
                    251:        value *= RADIX ;
                    252:        value += (long)sp->curleft ;
                    253:        value *= RADIX ;
                    254:        value += (long)sp->numbfile ;
                    255:        value *= RADIX ;
                    256:        value += (long)sp->fileinfo ;
                    257:        value *= RADIX ;
                    258:        value += (long)sp->numbstax ;
                    259:        value *= RADIX ;
                    260:        value += (long)sp->staxinfo ;
                    261:        value *= RADIX ;
                    262:        value += (long)sp->head_name ;
                    263:        value *= RADIX ;
                    264:        value += (long)sp->environ ;
                    265:        value *= RADIX ;
                    266:        value += (long)sp->next_space ;
                    267:        return(value) ;
                    268: }
                    269: long                                   /* hash value */
                    270: hash2_sp(sp)
                    271: struct SPACE *sp ;
                    272: {
                    273:        register long   value ;
                    274:        register int    i ;
                    275: 
                    276:        value = 0 ;
                    277:        for(i=0; i<sp->numbfile; i++)
                    278:        {
                    279:                value *= RADIX ;
                    280:                value += sp->fileinfo[i].leng ;
                    281:                value *= RADIX ;
                    282:                value += (long)sp->fileinfo[i].desc ;
                    283:        }
                    284:        for(i=0; i<sp->numbstax; i++)
                    285:        {
                    286:                value *= RADIX ;
                    287:                value += sp->staxinfo[i].top ;
                    288:                value *= RADIX ;
                    289:                value += (long)sp->staxinfo[i].size ;
                    290:                value *= RADIX ;
                    291:                value += sp->staxinfo[i].depth ;
                    292:        }
                    293:        return(value) ;
                    294: }
                    295: long                                   /* hash value */
                    296: hash_mn(man)
                    297: struct MANAGER *man ;
                    298: {
                    299:        register long   value ;
                    300: 
                    301:        value = (long)man->space ;
                    302:        value *= RADIX ;
                    303:        value += man->page_id ;
                    304:        value *= RADIX ;
                    305:        value += man->usecount ;
                    306:        value *= RADIX ;
                    307:        value += (long)man->ref_chng ;
                    308:        value *= RADIX ;
                    309:        value += (long)man->forward ;
                    310:        value *= RADIX ;
                    311:        value += (long)man->backward ;
                    312:        value *= RADIX ;
                    313:        value += (long)man->frame_pntr ;
                    314:        return(value) ;
                    315: }
                    316: #endif

unix.superglobalmegacorp.com

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