A User-Space Device Driver Framework in C++