From e8be00473df52eb71eeaaf12d2ca7334060558f2 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 24 Jun 2020 08:43:13 +0200 Subject: rtems: Generate Change license to BSD-2-Clause according to file histories and documentation re-licensing agreement. Update #3899. Update #3993. --- cpukit/include/rtems/rtems/mp.h | 156 ++++++++++++++++++++++++++++++++-------- 1 file changed, 126 insertions(+), 30 deletions(-) (limited to 'cpukit/include') diff --git a/cpukit/include/rtems/rtems/mp.h b/cpukit/include/rtems/rtems/mp.h index 2f2cd822f8..ef4def2141 100644 --- a/cpukit/include/rtems/rtems/mp.h +++ b/cpukit/include/rtems/rtems/mp.h @@ -1,66 +1,162 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * - * @ingroup RTEMSImplClassic + * @brief This header file defines the Multiprocessing Manager API. + */ + +/* + * Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * @brief This header file provides parts of the multiprocessing (MP) API. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ -/* COPYRIGHT (c) 1989-2013. - * On-Line Applications Research Corporation (OAR). +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org */ +/* Generated from spec:/rtems/mp/if/header */ + #ifndef _RTEMS_RTEMS_MP_H #define _RTEMS_RTEMS_MP_H -#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/rtems/mp/if/group */ /** - * @defgroup RTEMSAPIClassicMP Multiprocessing + * @defgroup RTEMSAPIClassicMP Multiprocessing Manager * - * @ingroup RTEMSAPIClassic + * @ingroup RTEMSAPIClassic * - * This encapsulates functionality related to the distributed - * Multiprocessing support in the Classic API. + * @brief The Multiprocessing Manager provides support for heterogeneous + * multiprocessing systems based on message passing in a network of + * multiprocessing nodes. + * + * In multiprocessor real-time systems, new requirements, such as sharing data + * and global resources between processors, are introduced. This requires an + * efficient and reliable communications vehicle which allows all processors to + * communicate with each other as necessary. In addition, the ramifications of + * multiple processors affect each and every characteristic of a real-time + * system, almost always making them more complicated. + * + * RTEMS addresses these issues by providing simple and flexible real-time + * multiprocessing capabilities. The executive easily lends itself to both + * tightly-coupled and loosely-coupled configurations of the target system + * hardware. In addition, RTEMS supports systems composed of both homogeneous + * and heterogeneous mixtures of processors and target boards. + * + * A major design goal of the RTEMS executive was to transcend the physical + * boundaries of the target hardware configuration. This goal is achieved by + * presenting the application software with a logical view of the target system + * where the boundaries between processor nodes are transparent. As a result, + * the application developer may designate objects such as tasks, queues, + * events, signals, semaphores, and memory blocks as global objects. These + * global objects may then be accessed by any task regardless of the physical + * location of the object and the accessing task. RTEMS automatically + * determines that the object being accessed resides on another processor and + * performs the actions required to access the desired object. Simply stated, + * RTEMS allows the entire system, both hardware and software, to be viewed + * logically as a single system. */ -/**@{*/ -#ifdef __cplusplus -extern "C" { -#endif +/* Generated from spec:/rtems/mp/if/announce */ /** - * @brief An MPCI must support packets of at least this size. + * @ingroup RTEMSAPIClassicMP + * + * @brief Announces the arrival of a packet. + * + * This directive informs RTEMS that a multiprocessing communications packet + * has arrived from another node. This directive is called by the + * user-provided MPCI, and is only used in multiprocessing configurations. + * + * @par Notes + * @parblock + * This directive is typically called from an ISR. + * + * This directive does not generate activity on remote nodes. + * @endparblock + * + * @par Constraints + * @parblock + * The following constraints apply to this directive: + * + * * The directive may be called from within interrupt context. + * + * * The directive may be called from within device driver initialization + * context. + * + * * The directive may be called from within task context. + * + * * The directive may unblock another task which may preempt the calling task. + * @endparblock */ -#define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE +void rtems_multiprocessing_announce( void ); + +/* Generated from spec:/rtems/mp/if/minimum-hetero-conversion */ /** - * @brief Defines the count of @c uint32_t numbers in a packet which must be - * converted to native format in a heterogeneous system. + * @ingroup RTEMSAPIClassicMP + * + * @brief This constant defines the count of uint32_t numbers in a packet which + * must be converted to native format in a heterogeneous system. * * In packets longer than this value, some of the extra data may be a user * message buffer which is not automatically endian swapped. */ -#define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION +#define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION + +/* Generated from spec:/rtems/mp/if/minimum-packet-size */ /** - * @brief RTEMS Multiprocessing Announce + * @ingroup RTEMSAPIClassicMP * - * This routine implements the MULTIPROCESSING_ANNOUNCE directive. - * It is invoked by the MPCI layer to indicate that an MPCI packet - * has been received. + * @brief This constant defines the minimum packet size which must be supported + * by the MPCI. */ -void rtems_multiprocessing_announce ( void ); +#define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE #ifdef __cplusplus } #endif -/**@}*/ - -#endif -/* end of include file */ +#endif /* _RTEMS_RTEMS_MP_H */ -- cgit v1.2.3