To read/write an MMIO address using C++, you would use a pointer data type.
The S in CSR stands for:
status
A hard drive is an example of a block oriented IO device.
Block-oriented IO uses RAM as a central communication channel between the device and the program.
Checking a status register to detect a change is a technique known as
polling
Memory-mapped IO uses the memory controller to arbitrate data transfer to and from a device.
Programmers should use the volatile keyword in C++ since MMIO can produce side-effects.
character oriented IO describes data transfer one byte at a time.
Programmers can tell a block-oriented IO device that it needs to read/write by writing to the notify control register.
The C in CSR stands for:
control