source: rtems/cpukit/rtems/src/dpmemcreate.c

Last change on this file was c4fb617, checked in by Joel Sherrill <joel@…>, on 02/16/22 at 22:28:43

cpukit/rtems/src/[a-r]*.c: Change license to BSD-2

Updates #3053.

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @ingroup RTEMSImplClassicDPMem
7 *
8 * @brief This source file contains the implementation of
9 *   rtems_port_create() and the Dual-Ported Memory Manager system
10 *   initialization.
11 */
12
13/*
14 *  COPYRIGHT (c) 1989-2014.
15 *  On-Line Applications Research Corporation (OAR).
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 * 1. Redistributions of source code must retain the above copyright
21 *    notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 *    notice, this list of conditions and the following disclaimer in the
24 *    documentation and/or other materials provided with the distribution.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39#ifdef HAVE_CONFIG_H
40#include "config.h"
41#endif
42
43#include <rtems/rtems/dpmemimpl.h>
44#include <rtems/rtems/status.h>
45#include <rtems/rtems/support.h>
46#include <rtems/score/address.h>
47#include <rtems/score/thread.h>
48#include <rtems/sysinit.h>
49
50rtems_status_code rtems_port_create(
51  rtems_name    name,
52  void         *internal_start,
53  void         *external_start,
54  uint32_t      length,
55  rtems_id     *id
56)
57{
58  Dual_ported_memory_Control *the_port;
59
60  if ( !rtems_is_name_valid( name ) )
61    return RTEMS_INVALID_NAME;
62
63  if ( !id )
64    return RTEMS_INVALID_ADDRESS;
65
66  if ( !_Addresses_Is_aligned( internal_start ) ||
67       !_Addresses_Is_aligned( external_start ) )
68    return RTEMS_INVALID_ADDRESS;
69
70  the_port = _Dual_ported_memory_Allocate();
71
72  if ( !the_port ) {
73    _Objects_Allocator_unlock();
74    return RTEMS_TOO_MANY;
75  }
76
77  the_port->internal_base = internal_start;
78  the_port->external_base = external_start;
79  the_port->length        = length - 1;
80
81  *id = _Objects_Open_u32(
82    &_Dual_ported_memory_Information,
83    &the_port->Object,
84    name
85  );
86  _Objects_Allocator_unlock();
87  return RTEMS_SUCCESSFUL;
88}
89
90static void _Dual_ported_memory_Manager_initialization( void )
91{
92  _Objects_Initialize_information( &_Dual_ported_memory_Information );
93}
94
95RTEMS_SYSINIT_ITEM(
96  _Dual_ported_memory_Manager_initialization,
97  RTEMS_SYSINIT_CLASSIC_DUAL_PORTED_MEMORY,
98  RTEMS_SYSINIT_ORDER_MIDDLE
99);
Note: See TracBrowser for help on using the repository browser.