`volatile` is a beast few people fully understand. (And I admit that I do not fully understand it either ;-).) Are you sure that it is right to be used here? If so, please add comments explaining why it is needed. Otherwise, please get rid of it :-)