Code Overview
Folder Structure of OpenCIS Core
The high-level application for opencis-core is centered around apps folder.
Each file in apps is an application that can be run on its own OR any group
of application could be called from an external wrapper. The user friendly
cxl-util in the root directory, is a Python click library (i.e. CLI) wrapper
that calls into apps. If so desired, instead of a CLI app, one could create
any kind of application (e.g. web app) that calls into apps.
Key CXL Components
Each CXL component in apps represents a high-level entity in OpenCIS.
These entities are:
- CXL Switch
- CXL Logical Device (e.g. memory device)
- CXL Host
- CXL Fabric Manager
The following illustrates how these components are represented in the source code. The names listed are the actual names of the class. The format is: "name of the component class" followed by one or more "key member objects".
CXL Switch
- CxlSwitch (
opencis/apps/cxl_switch.py)- SwitchConnectionManager (
opencis/cxl/component/switch_connection_manager.py) - PhysicalPortManager (
opencis/cxl/component/physical_port_manager.py) - VirtualSwitchManager (
opencis/cxl/component/virtual_switch_manager.py) - MctpConnectionClient (
opencis/cxl/component/mctp/mctp_connection_client.py) - MctpCciExecutor (
opencis/cxl/component/mctp/mctp_cci_executor.py)
- SwitchConnectionManager (
CXL Logical Device
- SingleLogicalDeviceClient (
opencis/apps/single_logical_device.py)- SingleLogicalDevice (
opencis/cxl/device/single_logical_device.py)- ConfigSpaceManager (
opencis/pci/component/config_space_manager.py) - MmioManager (
opencis/pci/component/mmio_manager.py) - CxlMemManager (
opencis/cxl/component/cxl_mem_manager.py)
- ConfigSpaceManager (
- SingleLogicalDevice (
- MultipleLogicalDeviceClient (Coming soon...)
- MultipleLogicalDevice (Coming soon...)
CXL Host
- CxlHost (
opencis/apps/cxl_host.py)- CxlRootPortDevice (
opencis/cxl/device/root_port_device.py) - SwitchConnectionClient (
opencis/cxl/component/switch_connection_client.py)
- CxlRootPortDevice (
CXL Fabric Manager
- CxlFabricManager (
opencis/apps/fabric_manager.py)- MctpConnectionManager (
opencis/cxl/component/mctp/mctp_connection_manager.py) - MctpCciExecutor (
opencis/cxl/component/mctp/mctp_cci_executor.py) - FabricManagerSocketIoServer (
opencis/cxl/component/fabric_manager/socketio_server.py)
- MctpConnectionManager (