1 typedef unsigned long int size_t;
   2 
   3 /*
   4  * The alloc_align attribute is used to tell the compiler that the return
   5  * value points to memory, where the returned pointer minimum alignment is given
   6  * by one of the functions parameters. GCC uses this information to improve
   7  * pointer alignment analysis.
   8  *
   9  * The function parameter denoting the allocated alignment is specified by one
  10  * integer argument, whose number is the argument of the attribute. Argument
  11  * numbering starts at one.
  12  *
  13  * For instance,
  14  *
  15  *    void* my_memalign(size_t, size_t) __attribute__((alloc_align(1)))
  16  *
  17  * declares that my_memalign returns memory with minimum alignment given by
  18  * parameter 1.
  19  */
  20 
  21 #define __alloc_align(x)  __attribute__((__alloc_align__(x)))
  22 
  23 /*
  24  * The aligned_alloc function allocates space for an object whose alignment is
  25  * specified by alignment, whose size is specified by size, and whose value is
  26  * indeterminate. The value of alignment shall be a valid alignment supported
  27  * by the implementation and the value of size shall be an integral multiple
  28  * of alignment.
  29  *
  30  * The aligned_alloc function returns either a null pointer or a pointer to the
  31  * allocated space.
  32  */
  33 void *aligned_alloc(size_t alignment, size_t size) __alloc_align(1);
  34 
  35 
  36 /*
  37  * check-name: attribute __alloc_align__
  38  */