Click on this: »C Code For Device Driver
This second code fragment illustrates the complete set of five software routines needed to manage a pair of circular buffers for input and output to the UART using interrupts.
If the UART has a single interrupt output for both send and receive events, then two of the five routines are combined with a software dispatch between their bodies.