posix_memalign - phpMan

Command: man perldoc info search(apropos)  


POSIX_MEMALIGN(3)          Linux Programmer’s Manual         POSIX_MEMALIGN(3)



NAME
       posix_memalign, memalign, valloc - Allocate aligned memory

SYNOPSIS
       #define _XOPEN_SOURCE 600
       #include <stdlib.h>

       int posix_memalign(void **memptr, size_t alignment, size_t size);

       #include <malloc.h>

       void *valloc(size_t size);
       void *memalign(size_t boundary, size_t size);

DESCRIPTION
       The  function  posix_memalign()  allocates size bytes and places the address of the
       allocated memory in *memptr.  The address of the allocated memory will be a  multi-
       ple of alignment, which must be a power of two and a multiple of sizeof(void *).

       The  obsolete function memalign() allocates size bytes and returns a pointer to the
       allocated memory.  The memory address will be a multiple of boundary, which must be
       a power of two.

       The  obsolete  function  valloc() allocates size bytes and returns a pointer to the
       allocated memory.  The memory address will be a multiple of the page size.   It  is
       equivalent to memalign(sysconf(_SC_PAGESIZE),size).

       For all three routines, the memory is not zeroed.


RETURN VALUE
       memalign()  and valloc() return the pointer to the allocated memory, or NULL if the
       request fails.

       posix_memalign() returns zero on success, or one of the error values listed in  the
       next section on failure. Note that errno is not set.


ERRORS
       EINVAL The  alignment  parameter  was  not a power of two, or was not a multiple of
              sizeof(void *).

       ENOMEM There was insufficient memory to fulfill the allocation request.


NOTES
       On many systems there are alignment restrictions, e.g. on buffers used  for  direct
       block  device  I/O. POSIX specifies the pathconf(path,_PC_REC_XFER_ALIGN) call that
       tells what alignment is needed. Now one can use posix_memalign()  to  satisfy  this
       requirement.

       posix_memalign()  verifies  that alignment matches the requirements detailed above.
       memalign() may not check that the boundary parameter is correct.

       POSIX requires that memory  obtained  from  posix_memalign()  can  be  freed  using
       free().  Some systems provide no way to reclaim memory allocated with memalign() or
       valloc() (because one can only pass to free() a pointer gotten from malloc(), while
       e.g.   memalign() would call malloc() and then align the obtained value).  GNU libc
       allows memory obtained from any of  these  three  routines  to  be  reclaimed  with
       free().

       GNU libc malloc() always returns 8-byte aligned memory addresses, so these routines
       are only needed if you require larger alignment values.


AVAILABILITY
       The functions memalign() and  valloc()  have  been  available  in  all  Linux  libc
       libraries.  The function posix_memalign() is available since glibc 2.1.91.


CONFORMING TO
       The  function  valloc()  appeared in 3.0 BSD. It is documented as being obsolete in
       BSD 4.3, and as legacy in SUSv2. It no longer occurs in SUSv3.  The function  mema-
       lign()  appears  in  SunOS 4.1.3 but not in BSD 4.4.  The function posix_memalign()
       comes from POSIX 1003.1d.


HEADERS
       Everybody agrees that posix_memalign() is  declared  in  <stdlib.h>.  In  order  to
       declare  it,  glibc  needs _GNU_SOURCE defined, or _XOPEN_SOURCE defined to a value
       not less than 600.

       Everybody agrees that memalign() is declared in <malloc.h>.

       According to SUSv2, valloc() is declared in <stdlib.h>.  Libc4,5 and glibc  declare
       it in <malloc.h> and perhaps also in <stdlib.h> (namely, if _GNU_SOURCE is defined,
       or _BSD_SOURCE is defined, or, for glibc, if _XOPEN_SOURCE_EXTENDED is defined, or,
       equivalently, _XOPEN_SOURCE is defined to a value not less than 500).


SEE ALSO
       malloc(3), free(3), getpagesize(2), brk(2)



GNU                               2003-08-22                 POSIX_MEMALIGN(3)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache/1.3.41 (Unix) PHP/5.2.5 mod_perl/1.30 mod_gzip/1.3.26.1a
Under GNU General Public License
2009-01-10 10:29 @38.103.63.58 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!