LINUX.ORG.RU

История изменений

Исправление runtime, (текущая версия) :

http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword

A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change:

1. Memory-mapped peripheral registers

2. Global variables modified by an interrupt service routine

3. Global variables accessed by multiple tasks within a multi-threaded application

Я бы ещё отдельным пунктом вынес сигналы. Wikipedia также упомянает setjmp/longjmp.

Исходная версия runtime, :

http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword

A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change:

1. Memory-mapped peripheral registers

2. Global variables modified by an interrupt service routine

3. Global variables accessed by multiple tasks within a multi-threaded application

Я бы ещё отдельным пунктом вынес сигналы.