VMM Technical Manual
A virtual machine monitor for the Intel 80386
S.P.S. Evans
J.S. Harper
C.J. Luke
Introduction
The Initialisation Process
Boot Loader
Determining Media Characteristics
Hard Disk Media
Floppy Disk Media
Loading The Loader
System Check
Loading The Kernel
Setting Hardware To A Known State
Setting Up Page Tables
Setting Up Descriptor Tables
Entering Protected Mode
32-bit Setup
System Types
The Kernel
Modules
Using Modules
The Module Structure
Creating Modules
Module Files
Statically Linked Modules
The Kernel Module
Interrupts
Disabling Interrupts
Interrupt Handlers
Queued Interrupt Handlers
Exception Handling
Memory Management
Types Of Addresses
System Memory Map
Segment Functions
Page Allocation
Page Tables
The Page Fault Handler
Dynamic Memory Allocation
Task Handling
The Task Structure
Task Creation and Deletion
The Scheduler
Task Preemption
Task Lists
Semaphores
Time And Date Handling
Timers
DMA Handling
Error Codes
Formatted Output
Device Drivers
Generic Block Device Support
The Floppy Disk Driver
Floppy Filing System Interface
Floppy Function And Queue handling
FDC Low Level Routines
The Hard Disk Driver
Generic Hard Disk Handling
The IDE Driver
The Ramdisk Device
Video Drivers
Using Virtual Adaptors
Video Modes
Virtualisation Details
Implementing New Video Types
The VGA Functions
Keyboard Driver
Keyboard Overview
Raw Keyboards
Cooked Keyboards
TTY Driver
Opening And Closing TTYs
The Foreground TTY
TTY Output
TTY Input
Virtual Devices
Virtual Machines
Overview
Creating Virtual Machines
Virtual I/O Ports
Slots
Kill Handlers
Fault Handling
The GPE Handler
The Page Fault Handler
The Invalid Opcode Handler
Arpl Handlers
The Virtual A20 Gate
Virtual Device Structure
Launching Virtual Machines
The Virtual PIC
The Virtual PIT
Virtual DMA Controller
Virtual BIOS
Virtual CMOS
Virtual Floppy
Virtual IDE
Virtual Keyboard
Virtual Printer Ports
The Filing System
Introduction
File Names
Filesystem Structure
File Handling
File Handles
File Input and Output
Hard Links
Symbolic Links
Other File Operations
Directory Handling
Device Handling
The Buffer Cache
Library Functions
The Shell
Basics
Online Help
Adding New Commands
Adding Commands With The Kernel
Output
The Debugger
x
poke
dis
dgdt
dtss
dr
d
strsrch
System Log Daemon
Introduction
Operation
Functions
Opening The Log
Closing The Log
Writing To The Log
Controlling The Logging
Status Of The Log Daemon
Example Function Usage
Printer Spooler
Spooler Introduction
Spooler Operation
Spooler Functions
Adding A File To The Spooler
Using The Spooler As A Printer
Example Function Usage
Utility Functions
String And Memory Functions
Doubly Linked List Type
I/O Functions
Debugging Output
Development Environment
System Tools
Compiling The System
Bibliography
Index of Functions, Macros and Variables
Index of Data Types
Subject Index