/* */ /* * Copyright (c) 1989, 1990, 1991 by the University of Washington */ /* * */ /* * For copying and distribution information, please see the file */ /* * . */ #include "pmachine.h" #include "pfs.h" static PTEXT freep = NULL; int ptext_count = 0; int ptext_max = 0; /* */ /* * ptalloc - allocate and initialize ptext structure */ /* * */ /* * PTALLOC returns a pointer to an initialized structure of type */ /* * PTEXT. If it is unable to allocate such a structure, it */ /* * returns NULL. */ PTEXT ptalloc() { PTEXT vt; if(freep) { vt = freep; freep = freep->next; } else { vt = (PTEXT) malloc(sizeof(PTEXT_ST)); if (!vt) return(NULL); ptext_max++; } ptext_count++; /* nearly all parts are 0 [or NULL] */ ZERO(vt); /* The offset is to leave room for additional headers */ vt->start = vt->dat + MAX_PTXT_HDR; return(vt); } /* */ /* * ptfree - free a VTEXT structure */ /* * */ /* * VTFREE takes a pointer to a VTEXT structure and adds it to */ /* * the free list for later reuse. */ void ptfree(vt) PTEXT vt; { vt->next = freep; vt->previous = NULL; freep = vt; ptext_count--; } /* */ /* * ptlfree - free a VTEXT structure */ /* * */ /* * VTLFREE takes a pointer to a VTEXT structure frees it and any linked */ /* * VTEXT structures. It is used to free an entrie list of VTEXT */ /* * structures. */ void ptlfree(vt) PTEXT vt; { PTEXT nxt; while(vt != NULL) { nxt = vt->next; ptfree(vt); vt = nxt; } }