DynAMOS manual

RELEASE_0-5-5

The DynAMOS Team

This is the documentation of DynAMOS, a dynamic kernel updating system for commodity operating system kernels.


Table of Contents
1. Introduction
1.1. What Is It?
1.2. Example Updates
2. Approach
2.1. Related Work
2.2. Architecture
2.3. Adaptive Function Cloning
2.4. Safe Execution Flow Redirection
2.5. Version Manager
2.6. Safe Removal
2.7. Function Image Relocation
2.8. Symbol Resolution
2.9. Datatype Updates
2.10. Constructing Updates
3. Installation
3.1. Availability
3.2. Installation
4. Framework
4.1. Starting
4.2. Stopping
4.3. Control Tool
4.4. Control Commands
4.5. Writing Adaptation Handlers
4.6. Updating Datatypes
4.7. Control Center
4.8. Remote Control Service
5. Examples
5.1. Updating get_pid
5.2. Updating The Process Scheduler
A. FAQ
Glossary
List of Figures
2-1. A routine that immediately blocks through a call to the scheduler.
2-2. Disassembled output of a routine that immediately blocks through a call to the scheduler.
2-3. Disassembled output of a highly optimized version of the routine using the gcc arguments -Os (optimize for size) and -fomit-frame-pointer (omit the frame pointer).
2-4. Definition of BUG macro in Linux 2.4
2-5. Definition of switch_to macro in Linux 2.4
2-6. Disassembled output of switch_to macro in Linux 2.4
2-7. down semaphore acquire operation in Linux 2.4
2-8. Disassembled output of down semaphore acquire operation in Linux 2.4
2-9. Multiple entrypoints produced by icc
4-1. Starting the framework.
4-2. Stopping the framework.
4-3. Example control commands.
4-4. Function signature of pipe_write.
4-5. Example adaptation handler for pipe_write.
4-6. Managing a datatype mapping table.
4-7. Definition of struct new_task_struct.
4-8. Creating a shadow variable in do_fork.
4-9. Freeing a shadow variable in do_exit.
5-1. Running the example updates.
5-2. Expected output of get_pid() update.
5-3. Expected output of schedule() update.