|
|
1.1 ! root 1: /* ! 2: * static char ID_wrtfrmc[] = "@(#) writeframe.c: 1.1 1/8/82"; ! 3: */ ! 4: ! 5: writeframe(framenbr) ! 6: int framenbr; ! 7: { ! 8: ! 9: register int index; ! 10: register HEADER *gframe; ! 11: int byteswritten, spacenbr, fdes; ! 12: char file_name[NAMELENG]; ! 13: long offset; ! 14: long pagenbr; ! 15: ! 16: spacenbr = XTRCTSP(manager[framenbr].page_id); ! 17: pagenbr = XTRCTPN(manager[framenbr].page_id); ! 18: ! 19: gframe = &global_frames[spacenbr]; ! 20: ! 21: offset = 0L; ! 22: for( index = 0; index < gframe->numbfiles; index++ ) { ! 23: if( pagenbr < (offset + gframe->filesize[index]) ) ! 24: break; ! 25: offset += gframe->filesize[index]; ! 26: } ! 27: if( index == gframe->numbfiles ) ! 28: if( gframe->numbfiles == MAXFILES ) ! 29: return( fatal("address space too large") ); ! 30: else ! 31: gframe->filedes[++gframe->numbfiles] = NOTMADE; ! 32: ! 33: offset = pagenbr - offset; ! 34: ! 35: sprintf(file_name, "%s/%s%d", direct_names[spacenbr], TEMPLATE, index); ! 36: ! 37: if( gframe->filedes[index] == NOTMADE ) { ! 38: if( (fdes = creat(file_name,MODE) ) < 0 ) ! 39: return( fatal("create of new SDP file failed") ); ! 40: if( close(fdes) == SYSERR ) ! 41: return( fatal("close of new SDP file failed") ); ! 42: gframe->filedes[index] = CLOSED; ! 43: } ! 44: ! 45: if( gframe->filedes[index] == CLOSED ) ! 46: if( (gframe->filedes[index] = open(file_name, RW)) < 0 ) ! 47: return( fatal("open of new SDP file failed") ); ! 48: ! 49: if( lseek(gframe->filedes[index], offset*PAGESIZE, 0) < 0 ) ! 50: return( fatal("lseek on SDP file failed") ); ! 51: ! 52: SDP_write++; ! 53: if( dflag > 15 ) ! 54: fprintf( stderr, " w%02d ", framenbr ); ! 55: ! 56: if( (byteswritten = ! 57: write(gframe->filedes[index], manager[framenbr].frame_pntr, PAGESIZE)) < 0 ) ! 58: return( fatal("write failed to SDP file") ); ! 59: ! 60: partusage[manager[framenbr].partition]++; ! 61: partusage[num_partitions]++; ! 62: ! 63: return( byteswritten ); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.