×

Resolving RCU-scheduler deadlocks

  • US 9,003,420 B2
  • Filed: 05/18/2012
  • Issued: 04/07/2015
  • Est. Priority Date: 05/18/2012
  • Status: Expired due to Fees
First Claim
Patent Images

1. A system, comprising:

  • one or more processors;

    a memory coupled to said processors, said memory including a computer useable storage medium tangibly embodying at least one program of instructions executable by said processors to implement a read-copy update (RCU) subsystem and to perform operations for resolving deadlocks between said RCU subsystem and an operating system scheduler, comprising;

    providing an RCU registration component that allows an RCU reader to manipulate an rcu_read_lock_nesting counter when said RCU reader enters an RCU read-side critical section;

    providing an RCU unregistration component that allows an RCU reader to manipulate said rcu_read_lock_nesting counter when said RCU reader leaves an RCU read-side critical section;

    said unregistration component providing first and second rcu_read_lock_nesting manipulation paths that are dependent on a current value of said rcu_read_lock_nesting counter;

    said first rcu_read_lock_nesting manipulation path being taken when said current value of said rcu_read_lock_nesting counter is indicative of a task-context RCU reader exiting an outermost RCU read-side critical section;

    said first rcu_read_lock_nesting manipulation path including condition-based read-side helper processing that may result in invocation of said operating system scheduler;

    said first rcu_read_lock_nesting manipulation path further including a deadlock protection operation that manipulates said rcu_read_lock_nesting counter to prevent any intervening RCU reader from taking said first rcu_read_lock_nesting manipulation path while a task-context RCU reader is within that path;

    said second rcu_read_lock_nesting manipulation path being taken when said current value of said rcu_read_lock_nesting counter is indicative of a task-context RCU reader exiting a non-outermost RCU read-side critical section or an RCU reader being nested within said first rcu_read_lock_nesting manipulation path;

    said second rcu_read_lock_nesting manipulation path bypassing said condition-based read-side helper processingsaid RCU unregistration component allowing an RCU reader to manipulate said rcu_read_lock_nesting counter by either decrementing it or setting it to a value, depending on which manipulation path is taken by said RCU reader; and

    said first manipulation path comprising setting said rcu_read_lock_nesting counter to a deadlock protection value and said second manipulation path comprises decrementing said rcu_read_lock_nesting counter.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×