what is the exact use of volatile variables in writing device drivers