Called when user-space uses the read() system call on the device.
Must read data from the device, write at most sz bytes in the user-space buffer buf, and update the current position in the file off. f is a pointer to the same file structure that was passed in the open() operation
Must return the number of bytes read.
On Unix, read() operations typically block when there isn't enough data to read from the device