// Alloc.decl -- Structures used in BOUNDARY TAG STORAGE ALLOCATOR // // Ed McCreight (and friends) // Computer Science Laboratory // Xerox PARC, 3333 Coyote Hill Road, // Palo Alto, Calif. 94304, (415)-494-4000 // error codes manifest [ ecOutOfSpace = 1801 ecZoneAdditionError = 1802 ecBlockNotAllocated = 1803 ecIllFormed = 1804 ecBadRequest = 1805 ] //--------------------------------------------------------------------------- structure SB: // storage block //--------------------------------------------------------------------------- [ length word // + for free blocks, - for allocated ones data word = // allocated block: start of data space [ // free block only pSbNext word pSbPrevious word ] ] manifest [ lSbOverhead = offset SB.data/16 minLSbFree = size SB/16 offsetSbData = offset SB.data/16 ] //--------------------------------------------------------------------------- structure ZONE: //Zone object //--------------------------------------------------------------------------- [ Allocate word Free word OutOfSpaceRtn word // Non-zero to report insufficient space MalFormedRtn word // Non-zero to do consistency checks anchor @SB rover word minAdr word maxAdr word ] manifest [ lZn = size ZN/16 lZnOverhead = lZn + lSbOverhead ] // DCS, March 11, 1978 1:47 PM, derived from Alloc.Bcpl // k40\f0