![]() |
|
|||
File indexing completed on 2025-05-11 08:24:13
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /** 0004 * @file 0005 * 0006 * @ingroup RTEMSScoreMRSP 0007 * 0008 * @brief This header file provides interfaces of the 0009 * @ref RTEMSScoreMRSP which are used by the implementation and the 0010 * @ref RTEMSImplApplConfig. 0011 */ 0012 0013 /* 0014 * Copyright (C) 2014, 2016 embedded brains GmbH & Co. KG 0015 * 0016 * Redistribution and use in source and binary forms, with or without 0017 * modification, are permitted provided that the following conditions 0018 * are met: 0019 * 1. Redistributions of source code must retain the above copyright 0020 * notice, this list of conditions and the following disclaimer. 0021 * 2. Redistributions in binary form must reproduce the above copyright 0022 * notice, this list of conditions and the following disclaimer in the 0023 * documentation and/or other materials provided with the distribution. 0024 * 0025 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0026 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0027 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0028 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0029 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0030 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0031 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0032 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0033 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0034 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0035 * POSSIBILITY OF SUCH DAMAGE. 0036 */ 0037 0038 #ifndef _RTEMS_SCORE_MRSP_H 0039 #define _RTEMS_SCORE_MRSP_H 0040 0041 #include <rtems/score/cpuopts.h> 0042 #include <rtems/score/threadq.h> 0043 0044 #ifdef __cplusplus 0045 extern "C" { 0046 #endif /* __cplusplus */ 0047 0048 /** 0049 * @defgroup RTEMSScoreMRSP Multiprocessor Resource Sharing Protocol (MrsP) 0050 * 0051 * @ingroup RTEMSScore 0052 * 0053 * @brief This group contains the implementation to support the Multiprocessor 0054 * Resource Sharing Protocol (MrsP) . 0055 * 0056 * The Multiprocessor Resource Sharing Protocol (MrsP) is defined in A. Burns 0057 * and A.J. Wellings, A Schedulability Compatible Multiprocessor Resource 0058 * Sharing Protocol - MrsP, Proceedings of the 25th Euromicro Conference on 0059 * Real-Time Systems (ECRTS 2013), July 2013. It is a generalization of the 0060 * Priority Ceiling Protocol to SMP systems. Each MrsP semaphore uses a 0061 * ceiling priority per scheduler instance. A task obtaining or owning a MrsP 0062 * semaphore will execute with the ceiling priority for its scheduler instance 0063 * as specified by the MrsP semaphore object. Tasks waiting to get ownership 0064 * of a MrsP semaphore will not relinquish the processor voluntarily. In case 0065 * the owner of a MrsP semaphore gets preempted it can ask all tasks waiting 0066 * for this semaphore to help out and temporarily borrow the right to execute 0067 * on one of their assigned processors. 0068 * 0069 * @{ 0070 */ 0071 0072 #if defined(RTEMS_SMP) 0073 0074 /** 0075 * @brief MrsP control block. 0076 */ 0077 typedef struct { 0078 /** 0079 * @brief The thread queue to manage ownership and waiting threads. 0080 */ 0081 Thread_queue_Control Wait_queue; 0082 0083 /** 0084 * @brief The ceiling priority used by the owner thread. 0085 */ 0086 Priority_Node Ceiling_priority; 0087 0088 /** 0089 * @brief One ceiling priority per scheduler instance. 0090 */ 0091 Priority_Control ceiling_priorities[ RTEMS_ZERO_LENGTH_ARRAY ]; 0092 } MRSP_Control; 0093 0094 #endif /* RTEMS_SMP */ 0095 0096 /** @} */ 0097 0098 #ifdef __cplusplus 0099 } 0100 #endif /* __cplusplus */ 0101 0102 #endif /* _RTEMS_SCORE_MRSP_H */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |