Layered Device Driver Architecture for Kernel Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Device drivers implemented solely in kernel space are challenging to debug and can cause system crashes, requiring specialized kernel debuggers and resulting in increased development time and cost, with unique drivers needed for similar hardware functionalities.

Innovation Solution

A layered device driver architecture that splits the driver into an application component in user space, an interface component, and a physical component in kernel space, allowing high-level functions to be performed in user space and enabling common debugging tools, with the interface and physical components interacting through shared memory and APIs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If device drivers are implemented solely in kernel space, then hardware control functionality is achieved, but debugging becomes difficult and development time increases

Engineering Contradiction:
Improvehardware control functionalityVSAvoiddebugging difficulty
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The device driver is segmented into two distinct components: a kernel-space component that handles hardware control and a user-space component that handles high-level functionality. This segmentation allows each component to be developed, tested, and debugged independently, reducing overall debugging complexity while maintaining hardware control capabilities.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If device drivers are implemented solely in kernel space, then hardware manipulation is achieved, but system crashes occur and specialized debugging tools are required

Engineering Contradiction:
Improvehardware manipulation capabilityVSAvoidsystem crashes
Core Design Contradiction:
Ease of operationVSObject-affected harmful factors

Solution Approach 1:

A shared memory interface acts as an intermediary between the user-space and kernel-space driver components. This mediator allows safe communication and data exchange while preventing direct access that could cause system crashes. The shared memory buffer enables the user-space component to manipulate hardware-related data without compromising kernel stability.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If unique drivers are created for each hardware component, then specific hardware functionality is achieved, but development time and cost increase

Engineering Contradiction:
Improvehardware-specific functionalityVSAvoiddevelopment time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The user-space driver component provides universal functionality that can work with multiple different hardware devices. By placing device-specific adaptations in the kernel-space component while maintaining a common user-space interface, the system achieves hardware versatility without requiring separate complete driver implementations for each device type, significantly reducing development time and cost.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS9378046B1Manipulating hardware using a layered device driver
Publication Date: 2016.06.28 EMC IP HLDG CO LLC
  • US9378046B1 patent drawing
  • US9378046B1 patent drawing
  • US9378046B1 patent drawing

AI summary

A method for manipulating a hardware device using a layered device driver is discussed. An application may submit an instruction to an application driver component operating in user space. The instruction may be transmitted from the application driver component to an interface driver component operating in kernel space. The instruction may be transmitted again to a physical driver component, which thereafter manipulates a hardware component in accordance with the instruction.