Common Software Environment API for Cross-Mode Communication

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developing software for data storage devices is challenging due to distinct operational constraints and the lack of a common interface for integrating software components across different data storage system environments, leading to static and non-expandable programming environments that hinder platform independence and code reuse.

Innovation Solution

A scalable, common software platform architecture that uses APIs to facilitate communication between code modules executing in user or kernel mode, enabling platform independence and code reuse across various data storage systems by providing a unified framework for user space to kernel space and kernel to user space communication, and utilizing helper modules to establish communication paths between code modules in different execution modes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a code module is designed to execute in both user mode and kernel mode across different operating systems, then platform independence and code reuse are improved, but the complexity of the application programming interface increases to accommodate multiple execution modes and communication paths

Engineering Contradiction:
Improveplatform independenceVSAvoidAPI complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The application programming interface is designed with universal functionality to support multiple execution modes (user mode and kernel mode) and multiple communication paths (user-space to user-space, user-space to kernel-space, kernel-space to kernel-space, kernel-space to user-space) within a single unified interface. This allows the same code module to execute across different operating systems and hardware platforms without requiring separate API implementations for each environment.

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

Solution Approach 2:

Helper modules are introduced as intermediary components that facilitate communication between code modules executing in different execution modes. The helper modules manage the complexity of mode transitions and communication path establishment, allowing the main API to remain simplified while still supporting multi-mode operation across diverse platforms.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If helper modules are introduced to facilitate communication between code modules in different execution modes, then adaptability across execution modes is improved, but the overall system complexity increases

Engineering Contradiction:
Improveexecution mode compatibilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

Helper modules serve as intermediary components that specialize in facilitating communication between code modules executing in different modes (user mode and kernel mode). These helper modules encapsulate the complexity of mode transitions, permission management, and communication path establishment, allowing the rest of the system to interact with simplified interfaces while still achieving cross-mode compatibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS7950025B1Common software environment
Publication Date: 2011.05.24 EMC IP HLDG CO LLC
  • US7950025B1 patent drawing
  • US7950025B1 patent drawing
  • US7950025B1 patent drawing

AI summary

Described are techniques for facilitating communication between code modules. A first code module is provided that makes at least one call using an application programming interface. The application programming interface facilitates communication between the first code module and a target code module and provides support for performing the at least one call from a first execution mode associated with the first code module and a second execution mode associated with the target code module. The application programming interface provides support for user space to user space communication, user space to kernel space communication, kernel space to kernel space communication, and kernel to user space communication. The first execution mode of the first code module and said second execution mode of the target code module are determined. A communication path is established between the code modules in accordance with the first and second execution modes.