Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/Documentation/litmus-tests/rcu/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 892 B image not shown  

Quelle  RCU+sync+free.litmus   Sprache: unbekannt

 
Spracherkennung für: .litmus vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

C RCU+sync+free

(*
 * Result: Never
 *
 * This litmus test demonstrates that an RCU reader can never see a write that
 * follows a grace period, if it did not see writes that precede that grace
 * period.
 *
 * This is a typical pattern of RCU usage, where the write before the grace
 * period assigns a pointer, and the writes following the grace period destroy
 * the object that the pointer used to point to.
 *
 * This is one implication of the RCU grace-period guarantee, which says (among
 * other things) that an RCU read-side critical section cannot span a grace period.
 *)

{
int x = 1;
int *y = &x;
int z = 1;
}

P0(int *x, int *z, int **y)
{
 int *r0;
 int r1;

 rcu_read_lock();
 r0 = rcu_dereference(*y);
 r1 = READ_ONCE(*r0);
 rcu_read_unlock();
}

P1(int *x, int *z, int **y)
{
 rcu_assign_pointer(*y, z);
 synchronize_rcu();
 WRITE_ONCE(*x, 0);
}

exists (0:r0=x /\ 0:r1=0)

[ Dauer der Verarbeitung: 0.33 Sekunden  ]