Getting started with Linux device driver design