Binary compatibility is the ability to run binaries from foreign
operating systems (OS) with a minimal performance penalty. It is
limited to binaries built for the same processor family. In this
presentation, we describe how binary compatibility works in NetBSD
and then we concentrate on the challenges we need to overcome in
order to execute MacOS X binaries. Finally we are going to present
the current status of the project, together with the roadmap for
The basic compatibility area functionality includes:
- Processor and OS specific trap handling
- System call number, argument, and error number remapping
- Path name conflict resolution
- Signal delivery handling and mapping
- Hooks to handle process/thread creation, startup, and termination
Additional MacOS specific challenges include:
- Handling a new executable format: Mach-O
- Implementing the Mach message-passing API
- Implementing a translation layer from the various Mach server APIs
to our kernel APIs
- Emulating the IOKit API, which is used to access devices directly on
MacOS X. The IOKit has nothing in common with the historic Unix I/O
APIs which is used in NetBSD.
- Handle MacOS X Graphical User Interface (GUI) based applications.
These applications use a display system called Quartz which is
different and incompatible with traditional Unix windows systems
such as NetBSD's X Window system.
The presentation outlines the way various problems have been solved, and
it explores possible ways of dealing with yet unresolved issues.