Detailed Linux device driver development