Annotation of researchv9/jerq/sgs/libsdp/unuse.c, revision 1.1

1.1     ! root        1: static char ID[] = "@(#) unuse.c: 1.1 3/16/82";
        !             2: 
        !             3: #include <stdio.h>
        !             4: #include "sdp.h"
        !             5: #include "define3.h"
        !             6: 
        !             7: #ifdef SHORT
        !             8: #define UN01   "UN01 "
        !             9: #define UN02   "UN02 "
        !            10: #define UN03   "UN03 "
        !            11: #define UN04   "UN04 "
        !            12: #define UN05   "UN05 "
        !            13: #define UN06   "UN06 "
        !            14: #define UN07   "UN07 "
        !            15: #define UN08   "UN08 "
        !            16: #define UN09   "UN09 "
        !            17: #define UNAU   "UNAU "
        !            18: #else
        !            19: #define UN01   "UN01 -- space not connected\n%o\n",sp
        !            20: #define UN02   "UN02 -- id out of range\n%lo\t%lo\n",id,sp->maxpage
        !            21: #define UN03   "UN03 -- attempt to unuse an item not core resident\n%o\t%lo\n",sp,id
        !            22: #define UN04   "UN04 -- frame search failed\n%o\n",sp
        !            23: #define UN05   "UN05 -- whichframe returned an impossible value\n%o\t%d\t%d\n",sp,whichframe,(sp->environ)->num_frames
        !            24: #define UN06   "UN06 -- no permissions for WRTN\n%o\n",sp
        !            25: #define UN07   "UN07 -- unknown permissions\n%o\t%d\n",sp,permissions
        !            26: #define UN08   "UN08 -- attempt to unuse an unused item\n%o\n%O\n",sp,id
        !            27: #define UN09   "%s","UN09 -- compilation made without either LFU or LRU defined\n"
        !            28: #define UNAU   "%s","UNAU -- audit failed in sdp_unuse\n"
        !            29: #endif
        !            30: 
        !            31: #ifdef SWEET
        !            32: #define PROLOG
        !            33: #define EPILOG
        !            34: #else
        !            35: #define PROLOG         if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\
        !            36:                                ERR_RET(UNAU,ERROR)
        !            37: #define EPILOG         if(aud_flag == AUDITON)\
        !            38:                                aud_set() ;\
        !            39:                        if(hist_fp != NULL)\
        !            40:                                fprintf(hist_fp,"UN\t%o\t%ld\t%d\n",sp,id,permissions) ;
        !            41: #endif
        !            42: 
        !            43: extern int aud_flag ;
        !            44: extern struct LIBFILE *Glib_file ;
        !            45: extern FILE *hist_fp ;
        !            46: 
        !            47: extern int aud_check() ;
        !            48: extern aud_set() ;
        !            49: extern FATAL() ;
        !            50: extern framesearch() ;
        !            51: extern spsearch() ;
        !            52: extern int rem_frame() ;
        !            53: extern ins_frame() ;
        !            54: 
        !            55: int                                    /* SUCCESS or ERROR */
        !            56: sdp_unuse(sp,id,permissions)
        !            57: register struct SPACE  *sp ;
        !            58: ITEMID         id ;
        !            59: int            permissions ;
        !            60: {
        !            61:        register struct MANAGER *manager ;
        !            62:        register int            whichframe ;
        !            63:        register long           usecount ;
        !            64: 
        !            65:        PROLOG
        !            66:        if(spsearch(sp) == NOTFOUND)
        !            67:                ERR_RET(UN01,ERROR)
        !            68: 
        !            69:        if(INVALID(sp,id))
        !            70:                ERR_RET(UN02,ERROR)
        !            71: 
        !            72:        Glib_file = sp->lib_file ;
        !            73: 
        !            74:        switch(whichframe = framesearch(sp,id))
        !            75:        {
        !            76:                case NOTFOUND:
        !            77:                        ERR_RET(UN03,ERROR)
        !            78:                        break ;
        !            79: 
        !            80:                case ERROR:
        !            81:                        ERR_RET(UN04,ERROR)
        !            82:                        break ;
        !            83: 
        !            84:                default:
        !            85:                        if( (whichframe<0) || (whichframe >= (sp->environ)->num_frames) )
        !            86:                                ERR_RET(UN05,ERROR)
        !            87:                        break ;
        !            88:        }
        !            89: 
        !            90: 
        !            91:        manager = (sp->environ)->manp ;
        !            92:        switch(permissions)
        !            93:        {
        !            94:                case WRTN:
        !            95:                        if(sp->perms != WRTN)
        !            96:                                ERR_RET(UN06,ERROR)
        !            97:                        manager[whichframe].ref_chng = WRTN ;
        !            98:                        break ;
        !            99: 
        !           100:                case RNLY:
        !           101:                        break ;
        !           102: 
        !           103:                default:
        !           104:                        ERR_RET(UN07,ERROR)
        !           105:        }
        !           106: 
        !           107:        usecount = --manager[whichframe].usecount ;
        !           108:        if(usecount < 0)
        !           109:                ERR_RET(UN08,ERROR)
        !           110: 
        !           111:        if(usecount == 0)
        !           112:                (sp->environ)->stats.curuse-- ;
        !           113: #ifdef LRU
        !           114:        rem_frame(sp->environ,whichframe) ;
        !           115:        ins_frame(sp->environ,whichframe,(sp->environ)->num_frames) ;
        !           116: #else
        !           117: #ifdef LFU
        !           118:        if(manager[whichframe].forward != (sp->environ)->num_frames)
        !           119:                ins_frame(sp->environ,rem_frame(sp->environ,manager[whichframe].forward),whichframe) ;
        !           120: #else
        !           121:        ERR_RET(UN09,ERROR)
        !           122: #endif
        !           123: #endif
        !           124:        EPILOG
        !           125:        return(SUCCESS) ;
        !           126: }

unix.superglobalmegacorp.com

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