X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Frts%2FBlockAlloc.h;fp=ghc%2Frts%2FBlockAlloc.h;h=d3e6d53a34694774f038ddd26218c9e1dd012996;hb=438596897ebbe25a07e1c82085cfbc5bdb00f09e;hp=0000000000000000000000000000000000000000;hpb=967cc47f37cb93a5e2b6df7822c9a646f0428247;p=ghc-hetmet.git diff --git a/ghc/rts/BlockAlloc.h b/ghc/rts/BlockAlloc.h new file mode 100644 index 0000000..d3e6d53 --- /dev/null +++ b/ghc/rts/BlockAlloc.h @@ -0,0 +1,41 @@ +/* ----------------------------------------------------------------------------- + * $Id: BlockAlloc.h,v 1.2 1998/12/02 13:28:13 simonm Exp $ + * + * Block Allocator Interface + * + * ---------------------------------------------------------------------------*/ + +#ifndef BLOCK_ALLOC_H +#define BLOCK_ALLOC_H + +/* Initialisation ---------------------------------------------------------- */ + +extern void initBlockAllocator(void); + +/* Allocation -------------------------------------------------------------- */ + +extern bdescr *allocGroup(nat n); +extern bdescr *allocBlock(void); + +/* De-Allocation ----------------------------------------------------------- */ + +extern void freeGroup(bdescr *p); +extern void freeChain(bdescr *p); + +/* Finding the block descriptor for a given block -------------------------- */ + +static inline bdescr *Bdescr(StgPtr p) +{ + return (bdescr *) + ((((W_)p & MBLOCK_MASK & ~BLOCK_MASK) >> (BLOCK_SHIFT-BDESCR_SHIFT)) + | ((W_)p & ~MBLOCK_MASK) + ); +} + +/* Debugging -------------------------------------------------------------- */ + +#ifdef DEBUG +extern void checkFreeListSanity(void); +#endif + +#endif BLOCK_ALLOC_H