// 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
//