XFree86 server 4.x Design (DRAFT) : Modules, Drivers, Include Files and Interface Issues
Previous: Config file ``Option'' entries
Next: Offscreen Memory Manager

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

NOTE: this section is incomplete.

### 11.1. Include files

The following include files are typically required by video drivers:

> All drivers should include these:

> > `"xf86.h"
> > "xf86_OSproc.h"
> > "xf86_ansic.h"
> > "xf86Resources.h"`

> Wherever inb/outb (and related things) are used the following should be included:

> > `"compiler.h"`

> Note: in drivers, this must be included after `"xf86_ansic.h"`.

> Drivers that need to access PCI vendor/device definitions need this:

> > `"xf86PciInfo.h"`

> Drivers that need to access the PCI config space need this:

> > `"xf86Pci.h"`

> Drivers that initialise a SW cursor need this:

> > `"mipointer.h"`

> All drivers implementing backing store need this:

> > `"mibstore.h"`

> All drivers using the mi colourmap code need this:

> > `"micmap.h"`

> If a driver uses the vgahw module, it needs this:

> > `"vgaHW.h"`

> Drivers supporting VGA or Hercules monochrome screens need:

> > `"xf1bpp.h"`

> Drivers supporting VGA or EGC 16-colour screens need:

> > `"xf4bpp.h"`

> Drivers using cfb need:

> > `#define PSZ 8
> > #include "cfb.h"
> > #undef PSZ`

> Drivers supporting bpp 16, 24 or 32 with cfb need one or more of:

> > `"cfb16.h"
> > "cfb24.h"
> > "cfb32.h"`

> If a driver uses XAA, it needs these:

> > `"xaa.h"
> > "xaalocal.h"`

> If a driver uses the fb manager, it needs this:

> > `"xf86fbman.h"`

Non-driver modules should include `"xf86_ansic.h"` to get the correct wrapping of ANSI C/libc functions.

All modules must NOT include any system include files, or the following:

> `"xf86Priv.h"
> "xf86Privstr.h"
> "xf86_OSlib.h"
> "Xos.h"`

In addition, "xf86_libc.h" must not be included explicitly. It is included implicitly by "xf86_ansic.h".

XFree86 server 4.x Design (DRAFT) : Modules, Drivers, Include Files and Interface Issues
Previous: Config file ``Option'' entries
Next: Offscreen Memory Manager