XALLOC(9)                                               XALLOC(9)

     NAME
          xalloc, xallocz, xspanalloc, xfree, xsummary - basic memory
          management

     SYNOPSIS
          void* xalloc(ulong size)

          void* xallocz(ulong size, int clr)

          void* xspanalloc(ulong size, int align, ulong span)

          void  xfree(void *p)

          void  xsummary(void)

     DESCRIPTION
          These are primitives used by higher-level memory allocators
          in the kernel, such as malloc(9). They are not intended for
          use directly by most kernel routines.  The main exceptions
          are routines that permanently allocate large structures, or
          need the special alignment properties guaranteed by
          xspanalloc.

          Xalloc returns a pointer to a range of size bytes of memory.
          The memory will be zero filled and aligned on a 8 byte
          (BY2V) address. If the memory is not available, xalloc
          returns a null pointer.

          Xmallocz will clear the memory after allocation if clr is
          set to a value other than zero. Since it is used by xmalloc,
          the same diagnostics apply.

          Xspanalloc allocates memory given alignment and spanning
          constraints.  The block returned will contain size bytes,
          aligned on a boundary that is 0 mod align, in such a way
          that the memory in the block does not span an address that
          is 0 mod span.  Xspanalloc is intended for use allocating
          hardware data structures (eg, page tables) or I/O buffers
          that must satisfy specific alignment restrictions.  If
          xspanalloc cannot allocate memory to satisfy the given con-
          straints, it will panic(9). The technique it uses can some-
          times cause memory to be wasted.  Consequently, xspanalloc
          should be used sparingly.

          Xfree frees the block of memory at p, which must be an
          address previously returned by xalloc (not xspanalloc).

          Xsummary dumps memory allocation statistics to the console.
          The output includes the total free space, the number of free
          holes, and a summary of active holes.  Each line shows

     XALLOC(9)                                               XALLOC(9)

          `address top size'.

     SOURCE
          /sys/src/9/port/xalloc.c

     SEE ALSO
          malloc(9)