|
|
1.1 root 1: static char ID[] = "@(#) fault.c: 1.1 3/16/82";
2: #include "sdp.h"
3: #include "define3.h"
4:
5: #ifdef SHORT
6: #define FA01 "FA01 "
7: #define FA02 "FA02 "
8: #define FA03 "FA03 "
9: #define FA04 "FA04 "
10: #else
11: #define FA01 "%s","FA01 -- error return from nextsearch\n"
12: #define FA02 "%s","FA02 -- error return from writeframe\n"
13: #define FA03 "FA03 -- unknown ref/change value\n%d\t%o\t%d\n",manager[frame].ref_chng,sp,frame
14: #define FA04 "%s","FA04 -- error return from readpage\n"
15: #endif
16:
17: extern FATAL() ;
18: extern struct LIBFILE *Glib_file ;
19: extern nextsearch() ;
20: extern readpage() ;
21: extern writeframe() ;
22:
23: int /* frame number of ERROR */
24: fault(sp,id)
25: struct SPACE *sp ;
26: ITEMID id ;
27: {
28: register int frame ;
29: register struct MANAGER *manager ;
30:
31: id -= id % (sp->environ)->frame_size ;
32: if( (frame = nextsearch(sp->environ)) == NOTFOUND)
33: ERR_RET(FA01,ERROR)
34:
35: manager = (sp->environ)->manp ;
36: switch(manager[frame].ref_chng)
37: {
38: case WRTN:
39: if(writeframe(manager[frame].space,frame) == ERROR)
40: ERR_RET(FA02,ERROR)
41:
42: case RCNULL:
43: case RNLY:
44: break ;
45:
46: default:
47: ERR_RET(FA03,ERROR)
48: break ;
49: }
50:
51: if(readpage(sp,id,frame) == ERROR)
52: ERR_RET(FA04,ERROR)
53:
54: manager[frame].space = sp ;
55: manager[frame].page_id = id ;
56:
57: return(frame) ;
58: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.