Changeset 8fcafdd5 in rtems for cpukit/sapi


Ignore:
Timestamp:
May 21, 2014, 8:33:43 AM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, master
Children:
5fd4e35f
Parents:
9f058fb
git-author:
Sebastian Huber <sebastian.huber@…> (05/21/14 08:33:43)
git-committer:
Sebastian Huber <sebastian.huber@…> (05/28/14 08:50:41)
Message:

score: Multiprocessor Resource Sharing Protocol

Add basic support for the Multiprocessor Resource Sharing Protocol
(MrsP).

The Multiprocessor Resource Sharing Protocol (MrsP) is defined in A.
Burns and A.J. Wellings, A Schedulability Compatible Multiprocessor
Resource Sharing Protocol - MrsP, Proceedings of the 25th Euromicro
Conference on Real-Time Systems (ECRTS 2013), July 2013. It is a
generalization of the Priority Ceiling Protocol to SMP systems. Each
MrsP semaphore uses a ceiling priority per scheduler instance. These
ceiling priorities can be specified with rtems_semaphore_set_priority().
A task obtaining or owning a MrsP semaphore will execute with the
ceiling priority for its scheduler instance as specified by the MrsP
semaphore object. Tasks waiting to get ownership of a MrsP semaphore
will not relinquish the processor voluntarily. In case the owner of a
MrsP semaphore gets preempted it can ask all tasks waiting for this
semaphore to help out and temporarily borrow the right to execute on one
of their assigned processors.

The help out feature is not implemented with this patch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/sapi/include/confdefs.h

    r9f058fb r8fcafdd5  
    17931793      CONFIGURE_NETWORKING_SEMAPHORES)
    17941794
     1795  #if !defined(RTEMS_SMP) || \
     1796    !defined(CONFIGURE_MAXIMUM_MRSP_SEMAPHORES)
     1797    #define CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES 0
     1798  #else
     1799    #define CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES \
     1800      CONFIGURE_MAXIMUM_MRSP_SEMAPHORES * \
     1801        _Configure_From_workspace( \
     1802          RTEMS_ARRAY_SIZE(_Scheduler_Table) * sizeof(Priority_Control) \
     1803        )
     1804  #endif
     1805
    17951806  /*
    17961807   * If there are no user or support semaphores defined, then we can assume
     
    18011812  #else
    18021813    #define CONFIGURE_MEMORY_FOR_SEMAPHORES(_semaphores) \
    1803       _Configure_Object_RAM(_semaphores, sizeof(Semaphore_Control) )
     1814      _Configure_Object_RAM(_semaphores, sizeof(Semaphore_Control) ) + \
     1815        CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES
    18041816  #endif
    18051817
Note: See TracChangeset for help on using the changeset viewer.