# XFree86 server 4.x Design (DRAFT)

## The XFree86 Project, Inc

19 December 2003

NOTE: This is a DRAFT document, and the interfaces described here are subject to change without notice.

### 1. Preface

### 2. The XF86Config File

  2.1. Device section
  2.2. Screen section
  2.3. InputDevice section
  2.4. ServerLayout section
  2.5. Options

### 3. Driver Interface

### 4. Resource Access Control Introduction

  4.1. Terms and Definitions

### 5. Control Flow in the Server and Mandatory Driver Functions

  5.1. Parse the XF86Config file
  5.2. Initial processing of parsed information and command line options
  5.3. Enable port I/O access
  5.4. General bus probe
  5.5. Load initial set of modules
  5.6. Register Video and Input Drivers
  5.7. Initialise Access Control
  5.8. Video Driver Probe
  5.9. Matching Screens
  5.10. Allocate non-conflicting resources
  5.11. Sort the Screens and pre-check Monitor Information
  5.12. PreInit
  5.13. Cleaning up Unused Drivers
  5.14. Consistency Checks
  5.15. Check if Resource Control is Needed
  5.16. AddScreen (ScreenInit)
  5.17. Finalising RAC Initialisation
  5.18. Finishing InitOutput()
  5.19. Mode Switching
  5.20. Changing Viewport
  5.21. VT Switching
  5.22. End of server generation

### 6. Optional Driver Functions

  6.1. Mode Validation
  6.2. Free screen data

### 7. Recommended driver functions

  7.1. Save
  7.2. Restore
  7.3. Initialise Mode

### 8. Data and Data Structures

  8.1. Command line data
  8.2. Data handling
  8.3. Accessing global data
  8.4. Allocating private data

### 9. Keeping Track of Bus Resources

  9.1. Theory of Operation
  9.2. Resource Types
  9.3. Available Functions

### 10. Config file ``Option'' entries

### 11. Modules, Drivers, Include Files and Interface Issues

  11.1. Include files

### 12. Offscreen Memory Manager

### 13. Colormap Handling

### 14. DPMS Extension

### 15. DGA Extension

### 16. The XFree86 X Video Extension (Xv) Device Dependent Layer

### 17. The Loader

  17.1. Loader Overview
  17.2. Semi-private Loader Interface
  17.3. Module Requirements
  17.4. Public Loader Interface
  17.5. Special Registration Functions

### 18. Helper Functions

  18.1. Functions for printing messages
  18.2. Functions for setting values based on command line and config file
  18.3. Primary Mode functions
  18.4. Secondary Mode functions
  18.5. Functions for handling strings and tokens
  18.6. Functions for finding which config file entries to use
  18.7. Probing discrete clocks on old hardware
  18.8. Other helper functions

### 19. The vgahw module

  19.1. Data Structures
  19.2. General vgahw Functions
  19.3. VGA Colormap Functions
  19.4. VGA Register Access Functions

### 20. Some notes about writing a driver

  20.1. Include files
  20.2. Data structures and initialisation
  20.3. Functions

    $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DESIGN.sgml,v 1.54 2003/12/19 20:38:57 dawes Exp $