(libc.info.gz) Obstacks Data Alignment

Info Catalog (libc.info.gz) Status of an Obstack (libc.info.gz) Obstacks (libc.info.gz) Obstack Chunks
 
 3.2.4.9 Alignment of Data in Obstacks
 .....................................
 
 Each obstack has an "alignment boundary"; each object allocated in the
 obstack automatically starts on an address that is a multiple of the
 specified boundary.  By default, this boundary is aligned so that the
 object can hold any type of data.
 
    To access an obstack's alignment boundary, use the macro
 'obstack_alignment_mask', whose function prototype looks like this:
 
  -- Macro: int obstack_alignment_mask (struct obstack *OBSTACK-PTR)
      Preliminary: | MT-Safe | AS-Safe | AC-Safe |  POSIX Safety
      Concepts.
 
      The value is a bit mask; a bit that is 1 indicates that the
      corresponding bit in the address of an object should be 0.  The
      mask value should be one less than a power of 2; the effect is that
      all object addresses are multiples of that power of 2.  The default
      value of the mask is a value that allows aligned objects to hold
      any type of data: for example, if its value is 3, any type of data
      can be stored at locations whose addresses are multiples of 4.  A
      mask value of 0 means an object can start on any multiple of 1
      (that is, no alignment is required).
 
      The expansion of the macro 'obstack_alignment_mask' is an lvalue,
      so you can alter the mask by assignment.  For example, this
      statement:
 
           obstack_alignment_mask (obstack_ptr) = 0;
 
      has the effect of turning off alignment processing in the specified
      obstack.
 
    Note that a change in alignment mask does not take effect until
 _after_ the next time an object is allocated or finished in the obstack.
 If you are not growing an object, you can make the new alignment mask
 take effect immediately by calling 'obstack_finish'.  This will finish a
 zero-length object and then do proper alignment for the next object.
 
Info Catalog (libc.info.gz) Status of an Obstack (libc.info.gz) Obstacks (libc.info.gz) Obstack Chunks
automatically generated by info2html