Nowadays embedded systems software developers take advantage of the services of a real-time operating system (RTOS) to structure their device driver software. A device driver can be organized as a collection of “chunks” of concurrent software. The RTOS is involved in both scheduling the “chunks” and allowing them to communicate cleanly with one another. In different operating systems, the concurrent “chunks” of software might be given different names like ‘threads’ or ‘tasks’. For example, in the pSOS+ RTOS they are called ‘tasks’ and ‘Interrupt Service Routines’ (ISRs); and in the OSE RTOS they are called ‘prioritized processes’ and ‘interrupt processes’. The device driver designs shown in this paper assume that you are using an RTOS.