Custom Mac OS X
Device Driver Development

Open your hardware device, filesystem or network server to new markets by having experienced developers write your Mac driver for your company.

Our test-driven software development process ensures that the products we write for you will be reliable and trouble-free, thereby reducing tech support costs and improving your company's reputation for reliable software.

Mac OS X supports three types of device drivers. I/O Kit Kernel Extensions and Network Kernel Extensions run within the Mac OS X kernel xnu and have direct access to hardware devices as well as privileged microprocessor instructions. "Userspace drivers" run outside the kernel alongside regular applications while accessing hardware through the user clients that most device drivers provide within the kernel.

Most modern operating systems are divided between kernel and userspace programs. The programs you see on the screen when you work at your computer are in userspace. Also in userspace are servers and background daemons that perform essential operating system functions in an invisible way.

The kernel contains privileged code that can directly access hardware, operate in real time, or execute privileged machine instructions such as virtual memory management.

The Mac OS X kernel is based on the BSD Open Source UNIX kernel, but is modified to include the Mach microkernel at its core. Mach was originally developed to run in its own protected memory space, with the other kernel functions running in separate spaces. Microkernel architectures never really caught on because of the time overhead of context switches between the different kernel compenonts. On Mac OS X, Mach is directly linked into the BSD kernel; they run in the same memory space.

In this case, Mach is used for the basic operating system fuctions that it provides, such as multitasking, memory management and message passing.

Mac OS X replaces the traditional UNIX driver architecture with a unique system called the I/O Kit. Mac drivers are known as "kernel extensions" and are loaded and unloaded dynamically as needed. I/O Kit Kernel Extensions are written in a restricted subset of the C++ programming language known as Embedded C++.

Network drivers on OS X take the form of Network Kernel Extensions or NKEs. These are closer to the original BSD network code. One can support network communication interfaces such as gigabit ethernet, implement new routing protocols, new datastream protocols as alternatives to the common TCP and UDP, or implement link-layer encryption.

One Must Not Trifle With Wizards For It Makes Us Soggy And Hard To Light