Lines Matching refs:di

12 essere cambiate al di fuori dal thread di esecuzione corrente; come risultato,
15 *volatile* come una variabile atomica di facile utilizzo, ma non è così.
16 L'uso di *volatile* nel kernel non è quasi mai corretto; questo documento ne
19 Il punto chiave da capire su *volatile* è che il suo scopo è quello di
23 Il processo di protezione contro gli accessi concorrenti indesiderati eviterà
28 (spinlock, mutex, barriere di sincronizzazione, ecc) sono progettate per
30 non ci sarà bisogno di utilizzare *volatile*. Se vi sembra che *volatile* sia
32 In un pezzo di codice kernel scritto a dovere, *volatile* può solo servire a
35 Considerate questo tipico blocco di codice kernel::
42 Se tutto il codice seguisse le regole di sincronizzazione, il valore di un
44 lock. Un qualsiasi altro blocco di codice che vorrà usare quel dato rimarrà
45 in attesa del lock. Gli spinlock agiscono come barriere di sincronizzazione
48 potrebbe pensare di sapere cosa ci sarà nel dato condiviso ma la chiamata
49 spin_lock(), che agisce come una barriera di sincronizzazione, gli imporrà di
50 dimenticarsi tutto ciò che sapeva su di esso.
54 compilatore di ottimizzare gli accessi al dato anche _dentro_ alla sezione
58 l'uso di *volatile* - anzi potenzialmente dannoso.
60 L'uso di *volatile* fu originalmente pensato per l'accesso ai registri di I/O
63 non "ottimizzi" l'accesso ai registri all'interno di una sezione critica.
64 Ma, all'interno del kernel, l'accesso alla memoria di I/O viene sempre fatto
65 attraverso funzioni d'accesso; accedere alla memoria di I/O direttamente
68 quindi, di nuovo, *volatile* è inutile.
70 Un'altra situazione dove qualcuno potrebbe essere tentato dall'uso di
72 di una variabile. Il modo giusto di fare questo tipo di attesa è il seguente::
77 La chiamata cpu_relax() può ridurre il consumo di energia del processore
83 Ci sono comunque alcune rare situazioni dove l'uso di *volatile* nel kernel
87 architetture che supportano l'accesso diretto alla memoria di I/O.
93 ha altri effetti espliciti, rischia di essere rimosso da GCC. Aggiungere
98 Quindi jiffies può essere *volatile*, ma l'aggiunta ad altre variabili di
100 (parole di Linus) in questo contesto; correggerla non ne varrebbe la pena e
104 essere modificata da dispositivi di I/O può, a volte, essere legittimamente
105 *volatile*. Un esempio pratico può essere quello di un adattatore di rete
110 essere considerata. Di conseguenza, l'uso di *volatile* è probabile che venga
112 dall'uso di *volatile* dovrebbero fermarsi e pensare a cosa vogliono davvero
116 - purché accompagnate da una giustificazione che dimostri che i problemi di
129 Impulso e ricerca originale di Randy Dunlap
133 Migliorato dai commenti di Satyam Sharma, Johannes Stezenbach, Jesper