Kernel-User Callback Transport Mechanism for Structured Data Exchange

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for communication between user-space and kernel-space in computer systems lack structure and consistency, leading to error-prone implementations and compatibility issues due to the need for low-level bit manipulation and limited support for structured data transfer, which hinders scalability and portability in virtualization environments.

Innovation Solution

A communication mechanism that matches registration handles to API signatures with callbacks, allowing descriptors to be processed between kernel-space and user-space transports, enabling high-level primitives for communication and supporting multiple API versions to ensure compatibility and reduce coupling between user-space and kernel-space components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If character devices are used for user-space to kernel-space communication, then communication capability is provided, but structure and consistency are lacking leading to error-prone implementations

Engineering Contradiction:
Improveimplementation reliabilityVSAvoidcommunication interface complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer (transport mechanism with standardized API signatures and callback descriptors) between character devices and application code. This intermediary provides structure and consistency by handling low-level operations uniformly, reducing implementation errors while maintaining communication capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The transport mechanism provides self-service by automatically handling data marshalling, callback invocation, and error management. This eliminates the need for developers to manually implement these error-prone low-level operations, improving reliability without adding complexity to application code.

Inventive Principle:
Principle #25Self-service

2Reliability

If low-level bit manipulation interfaces are used, then communication between user-space and kernel-space is enabled, but the application becomes error-prone due to programming difficulty

Engineering Contradiction:
Improveapplication correctnessVSAvoidprogramming ease
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent introduces an intermediary layer (transport mechanism with standardized API signatures and callback descriptors) between character devices and application code. This intermediary provides structure and consistency by handling low-level operations uniformly, reducing implementation errors while maintaining communication capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces manual bit manipulation mechanics with an automated transport mechanism that handles data encoding, decoding, and parameter passing. This substitution eliminates error-prone manual operations while preserving the underlying communication functionality.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Adaptability or versatility

If file interfaces and socket interfaces are used for communication, then communication capability is provided, but structured semantic data cannot be sent across user and kernel boundary

Engineering Contradiction:
Improvedata structure supportVSAvoiddata packaging complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary layer (transport mechanism with standardized API signatures and callback descriptors) between character devices and application code. This intermediary provides structure and consistency by handling low-level operations uniformly, reducing implementation errors while maintaining communication capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent changes the parameter interface from raw file descriptors and socket handles to structured callback descriptors with explicit parameter definitions. This allows structured semantic data to be passed while the transport mechanism automatically handles the packaging and unpacking, reducing application complexity.

Inventive Principle:
Principle #35Parameter changes

4Adaptability or versatility

If tight integration and agreement between kernel-space and user-space applications is required, then compatibility is maintained, but scalability and portability are hindered

Engineering Contradiction:
ImproveportabilityVSAvoidcompatibility
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent creates a universal transport mechanism that can serve multiple communication scenarios (character devices, file interfaces, socket interfaces) through a single standardized interface. This multi-functional approach improves portability while maintaining compatibility through consistent API signatures and callback handling.

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

Solution Approach 2:

The patent introduces an intermediary layer (transport mechanism with standardized API signatures and callback descriptors) between character devices and application code. This intermediary provides structure and consistency by handling low-level operations uniformly, reducing implementation errors while maintaining communication capability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentEP2843552B1Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel
Publication Date: 2021.11.17 VMWARE INC
  • EP2843552B1 patent drawingFigure 1
  • EP2843552B1 patent drawingFigure 2
  • EP2843552B1 patent drawingFigure 3

AI summary

A computer system and method are described which provide high-level primitives that facilitate communication between a user-space application (205) and an operating system kernel (220). Transport components (210, 215) reside in user-space and in kernel-space that, upon either the application (205) or a kernel module (220) requesting to invoke a callback, deliver parameters and other data back and forth to one another, allowing the user-space application (205) and the kernel module (220) to communicate as if directly invoking the callback. Embodiments also provide for a definition standard that third-party developers can use to automatically emit a header file and macros for sending events and dispatching callbacks.