Using the RMW atomic operators
A more advanced set of atomic operators called the RMW APIs is available as well. (Why exactly it’s called RMW and more is explained in the following section.) Among its many uses (we show a list in the upcoming section) is that of performing atomic RMW bitwise operations (safely and indivisibly). As a device driver author operating upon device or peripheral registers, this is indeed something you will very likely find yourself using.
The material in this section assumes you have at least a basic understanding of accessing peripheral device (chip) memory and registers; we have covered this topic in detail in the Linux Kernel Programming – Part 2 companion volume in Chapter 3, Working with Hardware I/O Memory. It’s recommended you first understand this before moving further.
When working with drivers, you’ll typically need to perform bit operations (with the bitwise AND &
and bitwise OR |
being the...