[Home | Products | Services | Contact]

Custom Mac OS X
Device Driver Development

Open your hardware device to a new market by having experienced developers write your Mac driver for your company.

To discuss your software development project with us, email sales@dulcineatech.com or call (503) 575-9116.

Dulcinea Technologies Corporation provides software consulting services, developing device driver and application software under contract that runs under Apple's Mac OS X operating system.

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 FreeBSD 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 FreeBSD kernel; they run in the same space.

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

Except for networking, 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 FreeBSD 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.

[Home | Products | Services | Contact]