Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
AssigneeCisco Technology, Inc.
InventorsMichael F. McDonald, Sumeet Arora, Mark Chu
Life of this patent
Estimating the term…
Abstract
A method for providing mutual exclusion at a single data element level for use in embedded systems. Entries for tasks that are currently holding a resource are stored in a hold list. Entries for tasks that are not currently executing and are waiting to be freed are stored in a wait list. A single mutual exclusion semaphore flags any request to access a resource.
Claims24
A method to be performed by a software routine that is comprised of a plurality of tasks that may desire to lock or unlock any of plurality of resources, said method comprising:
- maintaining a first list, said first list listing a first group of said tasks, wherein, each task listed within said first group of tasks is waiting in a suspended state for at least one of said resources to be freed;
- maintaining a second list, said second list listing a second group of said tasks, wherein, each task listed within said second group of tasks is holding at least one of said resources;
- suspending a first task and expanding said first list to include said first task upon said first task desiring to lock a resource that is being held by a second task, said second task being listed on said second list, said first task having a priority, said resource having any one of a plurality of different levels;
- setting a flag to a first state as a consequence of said first task said desiring to lock said resource;
- comparing said priority of said first task with the priority of said second task;
- and
- increasing the priority level of said second task to that of said first task if said second task has a lower priority than said first task.
A method to be performed by a software routine that is comprised of a plurality of tasks that may desire to lock or unlock any of plurality of resources, said method comprising:
- maintaining a first list, said first list listing a first group of said tasks, wherein, each task listed within said first group of tasks is waiting in a suspended state for at least one of said resources to be freed;
- maintaining a second list, said second list listing a second group of said tasks, wherein, each task listed within said second group of tasks is holding at least one of said resources;
- suspending a first task and expanding said first list to include said first task upon said first task desiring to lock a resource that is being held by a second task, said second task being listed on said second list, said first task having a priority, said resource having any one of a plurality of different levels;
- setting a flag to a first state as a consequence of said first task said desiring to lock said resource;
- comparing said priority of said first task with the priority of said second task;
- and
- increasing the priority level of said second task to that of said first task if said second task has a lower priority than said first task.
Dependencies are inferred from the claim text.