|
|
1.1 root 1: /*
2: * static char ID_flshc[] = "@(#) flush.c: 1.1 1/7/82";
3: */
4:
5: sdpterm(spacenbr)
6: int spacenbr;
7: {
8: register int index, fdes;
9:
10: if( (spacenbr < 0) || (spacenbr > MAXATTACH) )
11: return( fatal("illegal space number") );
12:
13: if( open_spacenumbers[spacenbr] != YES )
14: return( fatal("address space not open") );
15:
16: num_spaces--;
17: open_spacenumbers[spacenbr] = NO;
18:
19: for( index = 0; index < NUMBERFRAMES; index++ ) {
20:
21: if( spacenbr != XTRCTSP(manager[index].page_id) )
22: continue;
23:
24: if( manager[index].lock_count > 0 )
25: return( fatal("not all in-core pages unlocked") );
26: else if( manager[index].lock_count < 0 )
27: return( fatal("page lock count has gone negative") );
28:
29: if( (manager[index].ref_chng != WRTN) &&
30: (manager[index].ref_chng != RNLY) )
31: return( fatal("illegal page ref/change value") );
32: }
33:
34: for( index = 0; index < global_frames[spacenbr].numbfiles; index++ ) {
35: fdes = global_frames[spacenbr].filedes[index];
36: if( (fdes == NOTMADE) || (fdes == CLOSED) )
37: continue;
38: if( close(fdes) == SYSERR )
39: return( fatal("can't close pageing file") );
40: }
41:
42: return(SUCCESS);
43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.