Rings

This documentation topic refers to the rings for the Gen3 kernel which is currently in progress. The older Gen3 kernel rings have been disabled and will be phased out shortly.

What is a Ring?

To Do

Specifying a Ring

Use Cosmos.cfg, Ring entry.

Rings

Cosmos has the following rings. Assemblies in the same ring are permitted to reference each other.

CPU

Special Permissions

  • Unsafe Code
  • X# / Assembly

Inbound Refs

  • CpuPlug
  • Debug
  • Platform

Outbound Refs

  • Debug
  • External
Platform

Inbound Refs

  • Debug

Outbound Refs

  • CPU
  • Debug
  • External
  • HAL
HAL

Inbound Refs

  • Debug
  • Platform
  • System

Outbound Refs

  • Debug
  • External
System

Inbound Refs

  • Application
  • Debug
  • Plug

Outbound Refs

  • Debug
  • External
  • HAL
Application

Inbound Refs

  • Debug

Outbound Refs

  • Debug
  • External
  • System
Plug

All Plug Targets must be in external ring assemblies

Inbound Refs

  • Debug

Outbound Refs

  • Debug
  • External
  • System
CpuPlug

Special Permissions

  • Unsafe Code
  • X# / Assembly

Inbound Refs

  • Debug

Outbound Refs

  • CPU
  • Debug
  • External
Debug

Special Permissions

  • Unsafe Code
  • X# / Assembly

Inbound Refs

  • Any

Outbound Refs

  • Any
External

Any assembly without a ring marker will be placed in the External Ring. Any unsafe code or P/Invokes that are unplugged will generate and error if referenced.

Inbound Refs

  • Any

Outbound Refs

  • Debug