Actualmente estoy leyendo el código PostgreSql. He aquí un extracto de la gestión de memoria intermedia:Por qué marcar el argumento de función como volátil
static void WaitIO(volatile BufferDesc *buf);
static bool StartBufferIO(volatile BufferDesc *buf, bool forInput);
static void TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty,
sé la palabra clave volátil se utiliza generalmente para los controladores de dispositivos y en sistemas embebidos. Hay una explicación de la palabra clave.
Cuando se utiliza la palabra clave volátil en la definición de tipo, se está dando una indicación al compilador sobre cómo debe manejar la variable. Principalmente le dice al compilador que el valor de la variable puede cambiar en cualquier momento como resultado de acciones externas al programa o la línea de ejecución actual. (Source)
¿Por qué son ciertos argumentos de las funciones declaradas como volátil? No espero que DMA cambie la ubicación del puntero. Entonces, ¿qué pasa aquí?
No estoy seguro de que vale la pena otra pregunta, pero interesado en saber por qué es posible escribir 'func vacío (int arg volátil);' – ideasman42