page_title: Adaptive Domain Environment for Operating Systems
section_title: Adeos Interrupt Pipe
hierarchical_section_title: Adaptive Domain Environment for Operating Systems / Architecture / Adeos Interrupt Pipe
caption_attribution_description: English: Diagram of the Adoes Interrupt Pipe
context_page_description: Adeos is a nanokernel hardware abstraction layer or a hypervisor that operates between computer hardware and the operating system that runs on it. It is distinct from other nanokernels, in that it is not just a low level layer for an outer kernel. Instead it is intended to run several kernels together, which makes it similar to virtualization technologies.
  Adeos provides a flexible environment for sharing hardware resources among multiple operating systems, or among multiple instances of a single OS, thereby enabling multiple prioritized domains to exist simultaneously on the same hardware.
  Adeos has been successfully inserted beneath the Linux kernel, opening a range of possibilities, such as SMP clustering, more efficient virtualization, patchless kernel debugging and real-time systems for Linux.
  Unusually among HALs, Adeos can be loaded as a Linux loadable kernel module to allow another OS to run along with it. In fact Adeos was developed in the context of RTAI to modularize it and to separate the HAL from the real-time kernel.
context_section_description: Adeos uses an interrupt pipe to propagate interrupts through the different domains running on the hardware. As some domains may prefer to be the first to receive hardware interrupts, Adeos provides a mechanism for domains to have access to priority interrupt dispatching. In effect, Adeos places the requesting domain's interrupt handler and accompanying tables, which may be called as an interrupt mechanism in SPACE terminology, at the first stages of the interrupt pipeline. Domains can control whether they accept, ignore, discard or terminate interrupts. Each of these has a different effect and is controlled differently.
  Accepting interrupts is the normal state of a domain's interrupt mechanism. When Adeos encounters a domain that is accepting interrupts it summons its interrupt handler after having set the required CPU environment and stack content for the interrupt handler to operate correctly. The OS then may decide to operate any number of operations including task scheduling. Once the OS is done, the pipeline proceeds as planned by propagating interrupts down the pipeline.
  When an OS in a domain does not want to be interrupted, for any reason, it asks Adeos to stall the stage its domain occupies in the interrupt pipeline. By doing so, interrupts go no further in the pipeline and are stalled at the stage occupied by the domain. When the OS is done wanting to be uninterrupted, it asks Adeos to install the pipeline and thereafter all the interrupts that were stalled at the corresponding stage follow their route to the other stages of the pipeline.
  When a domain is discarding interrupts, the interrupt passes over the stage occupied by the domain and continues onto the other stages. When a domain terminates interrupts then the interrupts that are terminated by it are not propagated to latter stages. Interrupt discarding and termination is only possible when the OS in a domain recognizes Adeos.
  Since some OSes do not recognize Adeos, it is possible to create a domain which only serves as a handler for that OS. Hence, in the interrupt pipeline, this stage always precedes the handled domain's stage and may take actions for that domain with Adeos in order to provide the handled domain's OS with the illusion of normal system operation.
  Once Adeos is done traversing the pipeline it checks if all domains are dormant. If that is the case, it then calls on its idle task. This task remains active until the occurrence of the next interrupt. If all the domains aren't dormant it restores the processor to the state it had prior the interrupt entering the pipeline and execution continues where it had left. Since Adeos is very much hardware dependent, many details are specific to one of its particular implementations.
caption: Adeos Interrupt Pipe.
exif: {}