source: rtems/cpukit/libcsupport/src/posix_memalign.c

Last change on this file was 70432fc, checked in by Joel Sherrill <joel@…>, on 03/30/22 at 22:28:56

cpukit/libcsupport/src/[g-r]*: Change license to BSD-2

Updates #3053.

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @ingroup libcsupport
7 */
8
9/*
10 *  COPYRIGHT (c) 1989-2008.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 *    notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 *    notice, this list of conditions and the following disclaimer in the
20 *    documentation and/or other materials provided with the distribution.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 */
34
35#ifdef HAVE_CONFIG_H
36#include "config.h"
37#endif
38
39#ifdef RTEMS_NEWLIB
40#include "malloc_p.h"
41
42#include <stdlib.h>
43#include <errno.h>
44
45int posix_memalign(
46  void   **memptr,
47  size_t   alignment,
48  size_t   size
49)
50{
51  RTEMS_OBFUSCATE_VARIABLE( memptr );
52
53  if ( memptr == NULL ) {
54    return EINVAL;
55  }
56
57  *memptr = NULL;
58
59  if ( alignment < sizeof( void * ) ) {
60    return EINVAL;
61  }
62
63  if ( ( ( alignment - 1 ) & alignment ) != 0 ) {
64    return EINVAL;
65  }
66
67  if ( size == 0 ) {
68    return 0;
69  }
70
71  *memptr = rtems_heap_allocate_aligned_with_boundary( size, alignment, 0 );
72
73  if ( *memptr == NULL ) {
74    return ENOMEM;
75  }
76
77  return 0;
78}
79#endif
Note: See TracBrowser for help on using the repository browser.