Common Software Environment API for Cross-Mode Communication
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
Data Source
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.


