Device Driver Module Experiments exp1 - My first variation on the LKMPG device driver example. exp2 - Just a user level circular queue implementation in C. exp3 - Circular buffer on a single device but with unsound locking derived from the original LKMPG example. Command line testing with cat, head and echo (and redirection of input and output as needed). exp4 - Circular buffer on single device with atomic locking on open, no blocking. Circular buffer overflow data is tossed. Command line testing with cat, head and echo. exp5 - Circular buffer on two devices (separate read and write devices) along with atomic locking on open (for both reader and writer) so there is only one reader and one writer (peer to peer). Has a spinlock on the shared buffer access. Circular buffer overflow data is tossed. Command line testing with cat, head and echo. No blocking. exp6 - Circular buffer with single reader and single writer as in experiment 5, but now flow control semaphores are added for full and empty buffers so writers and readers both block. Command line testing with cat, head and echo. Does buffer level blocking, not character level blocking.