Designing User Space Device Drivers in Linux


Is it possible to run Linux device drivers in the user space? In the past, user space drivers were mostly used to make graphics run faster while avoiding the kernel. They increasingly became more important and the kernel is now seen as an obstacle to high server connection capacity. This is why hardware companies started to provide solutions for user space drivers.   

In these conditions, we decided to investigate in what degree the driver can be run in user space and what can be gained from this. Mats Liljegren, one of Enea’s Senior Software Architect  looked at the most common solutions for running drivers in the user space in the white paper “User space drivers in Linux”.

The main problems with kernel-space drivers are system call overhead, steep learning curve, interface stability, debug difficulty, more fatal bugs, restrictive language choice. On the other hand, user-space drivers have their own drawbacks, such as: interrupt handling, conditioned DMA, device interdependencies, Kernel services, client interface.

Read more at Enea.