This is alloc.h in view mode; [Download] [Up]
/* @(#)src/alloc.h 1.3 02 Dec 1990 03:43:02 */ /* * Copyright (C) 1987, 1988 Ronald S. Karr and Landon Curt Noll * * See the file COPYING, distributed with smail, for restriction * and warranty information. */ /* * alloc.h: * block storage allocation * This allows a given stroage allocation to be associated * with a group of other storage allocations. It is * possible to free or test for existence of the class. * * A block a pointer to a chain of segments. Each segment * refers to one storage allocation. A block also contains * the total number of segments allocated. If this number is * zero, then no stroage is associated with the block. */ /* * block allocation data structure */ struct block { struct bseg *next; /* if cnt > 0 then next holds segment chain */ int cnt; /* number of segments in the block */ }; struct bseg { struct bseg *next; /* if != NULL, then next alloc in block */ char *data; /* the storage allocated */ }; /* * handy macros to determine if a block is active */ #define is_memory(block_ptr) ((struct block *)(block_ptr)->cnt) #define is_free(block_ptr) (!(struct block *)(block_ptr)->cnt) /* * backward compat macros for pmalloc() - XXX */ #define pmalloc(size) (bmalloc((size),perm)) #define prealloc(data,size) (brealloc((data),(size),perm)) #define pfree(data) (bfree((data),perm)) /* * X_CHECK - check for the xmalloc magic number * * As a debugging aid, the integer X_MAGIC is stored at the beginning * of each block allocated with xmalloc(). This integer is then * cleared after a call to xfree(). This macro checks for the magic * characters and calls panic if they do not exist. */ #define X_MAGIC ((int)0xe8f987b1) #define X_CHECK(p) \ (((int*)(p))[-1] != X_MAGIC? \ (write_log(LOG_PANIC, \ "X_CHECK failed! ptr=0x%lx, line=%d, file=%s", \ (long)(p), __LINE__, __FILE__), \ x_dont_panic? \ FAIL: \ abort()) \ : SUCCEED) /* use these macros to panic code which should not generate a panic */ #define X_NO_PANIC() (x_dont_panic = TRUE) #define X_PANIC_OKAY() (x_dont_panic = FALSE)
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.