|
|
1.1 ! root 1: static char ID[] = "@(#) search.c: 1.1 3/16/82"; ! 2: #include <stdio.h> ! 3: #include "sdp.h" ! 4: #include "define3.h" ! 5: ! 6: ! 7: #ifdef SHORT ! 8: #define S201 "S201 " ! 9: #else ! 10: #define S201 "%s","S201 -- stack sizes incorrectly configured\n" ! 11: #endif ! 12: ! 13: extern struct LIBFILE *Glib_file ; ! 14: extern struct SPACE *first_space ; ! 15: extern struct ENVIRON *first_environ ; ! 16: ! 17: int /* frame number or NOTFOUND */ ! 18: framesearch(sp,id) ! 19: register struct SPACE *sp ; ! 20: ITEMID id ; ! 21: { ! 22: register int i ; ! 23: register struct MANAGER *manager ; ! 24: ! 25: manager = (sp->environ)->manp ; ! 26: ! 27: id -= id % (sp->environ)->frame_size ; ! 28: for(i=manager[(sp->environ)->num_frames].backward; i!=(sp->environ)->num_frames; i=manager[i].backward) ! 29: if( (manager[i].space == sp) && (manager[i].page_id == id) ) ! 30: return(i) ; ! 31: return(NOTFOUND) ; ! 32: } ! 33: ! 34: int /* frame number or NOTFOUND */ ! 35: nextsearch(environ) ! 36: register struct ENVIRON *environ ; ! 37: { ! 38: register int i ; ! 39: register struct MANAGER *manager ; ! 40: ! 41: manager = environ->manp ; ! 42: ! 43: if( (i = environ->empties) != END ) ! 44: { ! 45: environ->empties = manager[i].forward ; ! 46: ins_frame(environ,i,manager[environ->num_frames].forward) ; ! 47: return(i) ; ! 48: } ! 49: ! 50: for(i=manager[environ->num_frames].forward; i!=environ->num_frames; i=manager[i].forward) ! 51: if(manager[i].usecount == 0l) ! 52: return(i) ; ! 53: return(NOTFOUND) ; ! 54: } ! 55: ! 56: ! 57: int /* stack array index or NOTFOUND */ ! 58: stk1search(sp,howmuch) /* for sdp_allot */ ! 59: register struct SPACE *sp ; ! 60: unsigned howmuch ; ! 61: { ! 62: register int i ; ! 63: ! 64: for(i=0; i<sp->numbstax; i++) ! 65: if(sp->staxinfo[i].size >= (long)howmuch) ! 66: return(i) ; ! 67: return(NOTFOUND) ; ! 68: } ! 69: ! 70: ! 71: int /* stack array index or NOTFOUND */ ! 72: stk2search(sp,howmuch) /* for sdp_redeem) */ ! 73: register struct SPACE *sp ; ! 74: unsigned howmuch ; ! 75: { ! 76: register int i ; ! 77: ! 78: for(i=sp->numbstax-1; i>=0; i--) ! 79: if((long)howmuch >= sp->staxinfo[i].size) ! 80: return(i) ; ! 81: ERR_RET(S201,ERROR) ! 82: } ! 83: ! 84: ! 85: ! 86: int /* SUCCESS or NOTFOUND */ ! 87: spsearch(sp) ! 88: struct SPACE *sp; ! 89: { ! 90: ! 91: register struct SPACE *i; ! 92: ! 93: for(i=first_space; i!=NULL; i=i->next_space) ! 94: { ! 95: if(sp == i) ! 96: return(SUCCESS); ! 97: } ! 98: return(NOTFOUND); ! 99: ! 100: } ! 101: ensearch(en) ! 102: struct ENVIRON *en; ! 103: { ! 104: ! 105: register struct ENVIRON *i; ! 106: ! 107: for(i=first_environ; i!=NULL; i=i->next_environ) ! 108: { ! 109: if(en == i) ! 110: return(SUCCESS); ! 111: } ! 112: return(NOTFOUND); ! 113: ! 114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.