In
software engineering, a
compatibility layer is an interface that allows
binaries for a legacy or foreign system to run on a host system. This translates
system calls for the foreign system into native system calls for the host system. With some
libraries for the foreign system, this will often be sufficient to run foreign binaries on the host system. A hardware compatibility layer consists of tools that allow
hardware emulation.