Um eine Seite schmutzig zu machen (Einschalten des schmutzigen Bits im Seitentabelleneintrag), berühre ich die ersten Bytes der Seite wie folgt:
pageptr[0] = pageptr[0];
In der Praxis ignoriert gcc die Aussage jedoch durch Eliminierung des toten Speichers. Um zu verhindern, dass gcc es optimiert, schreibe ich die Anweisung wie folgt neu:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Es scheint, dass der Trick funktioniert, aber etwas hässlich. Ich würde gerne wissen, ob es Direktiven oder Syntax gibt, die den gleichen Effekt haben. Und ich möchte keine -O0
Flagge verwenden, da dies auch eine große Leistungsstrafe mit sich bringt.
-O0
die "Optimierung" von totem Code nicht verhindert hat. Wenn GCC beispielsweise feststellt, dass Code keinen Effekt hat, wird er einfach entfernt. AFAIK das ist schon eine Etappe -O0
... Aber das ist nur meine Erfahrung