Skip to content
Snippets Groups Projects
  • Avi Kivity's avatar
    94b69794
    rcu: add basic read-copy-update implementation · 94b69794
    Avi Kivity authored
    This adds fairly basic support for rcu.
    
    Declaring:
    
       mutex mtx;
       rcu_ptr<my_object> my_ptr;
    
    Read-side:
    
       WITH_LOCK(rcu_read_lock) {
          const my_object* p = my_ptr.read();
          // do things with *p
          // but don't block!
       }
    
    Write-side:
    
      WITH_LOCK(mtx) {
        my_object* old = my_ptr.read_by_owner();
        my_object* p = new my_object;
        // ...
        my_ptr.assign(p);
        rcu_dispose(old);  // or rcu_defer(some_func, old);
      }
    94b69794
    History
    rcu: add basic read-copy-update implementation
    Avi Kivity authored
    This adds fairly basic support for rcu.
    
    Declaring:
    
       mutex mtx;
       rcu_ptr<my_object> my_ptr;
    
    Read-side:
    
       WITH_LOCK(rcu_read_lock) {
          const my_object* p = my_ptr.read();
          // do things with *p
          // but don't block!
       }
    
    Write-side:
    
      WITH_LOCK(mtx) {
        my_object* old = my_ptr.read_by_owner();
        my_object* p = new my_object;
        // ...
        my_ptr.assign(p);
        rcu_dispose(old);  // or rcu_defer(some_func, old);
      }