Зачем отмечать аргумент функции как изменчивый

В настоящее время я читаю код PostgreSql . Вот выдержка из диспетчера буферов:

static void WaitIO(volatile BufferDesc *buf);
static bool StartBufferIO(volatile BufferDesc *buf, bool forInput);
static void TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty,

Я знаю, что ключевое слово volatile обычно используется для драйверов устройств и во встроенных системах. Есть объяснение ключевого слова.

Когда ключевое слово volatile используется в определении типа, оно указывает компилятору, как он должен обрабатывать переменную. В первую очередь он сообщает компилятору, что значение переменной может измениться в любое время в результате действий, внешних по отношению к программе или текущей строке выполнения. ( Источник )

Так почему же некоторые аргументы функции объявлены как изменчивые? Я не ожидаю, что DMA изменит расположение указателя. Так что здесь происходит?

19
задан hmijail 14 February 2013 в 18:34
поделиться