Annotation of researchv9/jerq/sgs/inc/sdpsrc/lo/sojourn.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * static char ID_sjrnc[] = "@(#) sojourn.c: 1.1 1/8/82";
                      3:  */
                      4: 
                      5: sojourn(itemid, partnbr, readaction)
                      6: long itemid;
                      7: int partnbr, readaction;
                      8: {
                      9: 
                     10:        register int   index1;
                     11:        register char *index2;
                     12:        int framenbr;
                     13: 
                     14: /*
                     15:  * Search the page frame contents, to see if the desired item is
                     16:  * already present
                     17:  */
                     18: 
                     19:        for( index1 = 0; index1 < NUMBERFRAMES; index1++ )
                     20:                if( itemid == manager[index1].page_id )
                     21:                        return( index1 );
                     22: 
                     23:        if( (partnbr < 0)  ||  (partnbr > num_partitions) )
                     24:                return( fatal("illegal frame partition supplied") );
                     25: 
                     26: /*
                     27:  * A frame must be selected for a item not currently in memory
                     28:  */
                     29: 
                     30:        if( (framenbr = lru[partnbr]) == NOFRAMES )
                     31:                return( fatal("no unlocked frames available") );
                     32: 
                     33:        if( manager[framenbr].ref_chng == WRTN )
                     34:                if( writeframe(framenbr) != PAGESIZE )
                     35:                        return( fatal("page write failed to output entire page") );
                     36: 
                     37:        if( readaction == YES ) {
                     38:                if( readpage(itemid, framenbr) != PAGESIZE )
                     39:                        return( fatal("page read failed to input entire page") );
                     40:                }
                     41:        else
                     42:                for( index2 = manager[framenbr].frame_pntr; index2 < manager[framenbr].frame_pntr+PAGESIZE; *index2++ = 0 )
                     43:                        ;
                     44: 
                     45:        manager[framenbr].page_id = itemid;
                     46:        manager[framenbr].ref_chng = RNLY;
                     47: 
                     48:        return( framenbr );
                     49: }

unix.superglobalmegacorp.com

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