Changes between Initial Version and Version 1 of Ticket #3359


Ignore:
Timestamp:
03/23/18 14:37:00 (6 years ago)
Author:
Gedare Bloom
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #3359 – Description

    initial v1  
    33= Problem
    44
    5 The RTEMS mutexes implement only a very simple approximation of the priority inheritance protocol.  The real priority of a thread is only restored once it releases its last mutex.  Lets consider this scenario.  We have a file system instance protected by one mutex (e.g. JFFS2) and a dynamic memory allocator protected by another mutex.  A low priority thread performs writes some log data into a file, thus it acquires the file system instance mutex.  The file system allocates dynamic memory.  Now a high priority thread interrupts and tries to allocate dynamic memory.  The allocator mutex is already owned, so the priority of the low priority thread is raised to the priority of the high priority thread.  The memory allocation completes and the allocator mutex is released, since the low priority thread still owns the file system instance mutex it continues to execute with the high priority (the high priority thread is not scheduled).  It may now perform complex and long file system operations (e.g.  garbage collection, polled flash erase and write functions) with a high priority.
     5The RTEMS mutexes implement only a very simple approximation of the priority inheritance protocol.  The real priority of a thread is only restored once it releases its last mutex.  Lets consider this scenario.  We have a file system instance protected by one mutex and a dynamic memory allocator protected by another mutex.  A low priority thread performs writes some log data into a file, thus it acquires the file system instance mutex.  The file system allocates dynamic memory.  Now a high priority thread interrupts and tries to allocate dynamic memory.  The allocator mutex is already owned, so the priority of the low priority thread is raised to the priority of the high priority thread.  The memory allocation completes and the allocator mutex is released, since the low priority thread still owns the file system instance mutex it continues to execute with the high priority (the high priority thread is not scheduled).  It may now perform complex and long file system operations (e.g.  garbage collection, polled flash erase and write functions) with a high priority.
    66
    77= Functional requirements