nvml-sys 0.0.6

A low-level FFI wrapper around the Persistent Memory Development Kit, PMDK (formerly NVML) and its libraries, including libpmem, libpmemobj and others. Currently tracks master after version 1.3.1.
---
layout: manual
Content-Style: 'text/css'
title: _MP(PMEMCTO_ALIGNED_ALLOC, 3)
collection: libpmemcto
header: PMDK
date: libpmemcto API version 1.0
...

[comment]: <> (Copyright 2017, Intel Corporation)

[comment]: <> (Redistribution and use in source and binary forms, with or without)
[comment]: <> (modification, are permitted provided that the following conditions)
[comment]: <> (are met:)
[comment]: <> (    * Redistributions of source code must retain the above copyright)
[comment]: <> (      notice, this list of conditions and the following disclaimer.)
[comment]: <> (    * Redistributions in binary form must reproduce the above copyright)
[comment]: <> (      notice, this list of conditions and the following disclaimer in)
[comment]: <> (      the documentation and/or other materials provided with the)
[comment]: <> (      distribution.)
[comment]: <> (    * Neither the name of the copyright holder nor the names of its)
[comment]: <> (      contributors may be used to endorse or promote products derived)
[comment]: <> (      from this software without specific prior written permission.)

[comment]: <> (THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS)
[comment]: <> ("AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT)
[comment]: <> (LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR)
[comment]: <> (A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT)
[comment]: <> (OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,)
[comment]: <> (SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT)
[comment]: <> (LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,)
[comment]: <> (DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY)
[comment]: <> (THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT)
[comment]: <> ((INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE)
[comment]: <> (OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.)

[comment]: <> (pmemcto_aligned_alloc.3 -- man page for libpmemcto)

[NAME](#name)<br />
[SYNOPSIS](#synopsis)<br />
[DESCRIPTION](#description)<br />
[RETURN VALUE](#return-value)<br />
[ERRORS](#errors)<br />
[SEE ALSO](#see-also)<br />


# NAME #

pmemcto_aligned_alloc -- allocate aligned memory


# SYNOPSIS #

```c
#include <libpmemcto.h>

void *pmemcto_aligned_alloc(PMEMctopool *pcp, size_t alignment, size_t size);
```


# DESCRIPTION #

The **pmemcto_aligned_alloc**() function provides the same semantics
as **aligned_alloc**(3), but operates on the memory pool *pcp* instead
of the process heap supplied by the system.  It allocates *size* bytes from
the memory pool and returns a pointer to the allocated memory.
The memory is not zeroed.
The memory address will be a multiple of *alignment*, which must be a power
of two.


# RETURN VALUE #

On success, **pmemcto_aligned_alloc**() function returns a pointer to the
allocated memory.
If *size* is 0, then **pmemcto_aligned_alloc**() returns either NULL,
or a unique pointer value that can later be successfully passed
to **pmemcto_free**(3).  If **pmemcto_aligned_alloc**() is unable to satisfy
the allocation request, a NULL pointer is returned and *errno* is set
appropriately.


# ERRORS #

**EINVAL** *alignment* was not a power of two.

**ENOMEM** Insufficient memory available to satisfy allocation request.


# SEE ALSO #

**pmemcto_malloc**(3), **aligned_alloc**(3), **malloc**(3),
**jemalloc**(3), **libpmemcto**(7) and **<http://pmem.io>**