論文の場合、揮発性変数を使用する実際のC関数を探しています。それ自体を見つけるのは難しいことではありませんが、関数の特定のブランチに到達するために、関数の実行中に揮発性変数の値を変更する必要がある関数を探しています。このようなもの:
typedef struct {
unsigned :6;
unsigned FLAG1 :1;
unsigned FLAG2 :1;
} __attribute__ ((packed)) REGISTER;
volatile REGISTER * io_ = 0x1234;
int write_to_io()
{
while (io_->FLAG1) {};
//io_->FLAG1 is now 0
io_->FLAG2 = 1;
sleep(10);
if (io->FLAG1)
return 1; //io->FLAG1 has changed from 0 to 1
else
return 0; //io->FLAG1 has not changed
}
関数の実行中に構造のさまざまなビットが変更されれば十分ですが、私の主な基準は、特定の分岐に到達するために、関数の実行中に揮発性変数の値が変更されることです。
実際の例に感謝します。Web上でvolatileを使用した多くの例を見つけることができませんでした。