In September 2007, QNX Software Systems announced the availability of some of its source code. On April 9, 2010, Research In Motion announced they would acquire QNX Software Systems from Harman International Industries. On the same day, QNX source code access was restricted from the public and hobbyists. In September 2010, the company announced a tablet computer, the BlackBerry PlayBook, and a new operating system BlackBerry Tablet OS based on QNX to run on the tablet. On October 18, 2011, Research In Motion announced "BBX", which was later renamed to BlackBerry 10, in December 2011. Blackberry 10 devices build upon the BlackBerry PlayBook QNX based operating system for touch devices, but adapt the user interface for smartphones using the Qt based Cascades Native User-Interface framework. At the Geneva Motor Show, Apple demonstrated CarPlay which provides an iOS-like user interface to head units in compatible vehicles. Once configured by the automaker, QNX can be programmed to hand off its display and some functions to an Apple CarPlay device. On December 11, 2014, Ford Motor Company stated the company would be replacing Microsoft Auto with QNX. In January 2017, QNX announced the upcoming release of its SDP 7.0, with support for Intel and ARM 32- and 64-bit platforms, and support for C++14; it was released in March 2017. The QNX kernel, codice_1, contains only CPU scheduling, interprocess communication, interrupt redirection and timers. Everything else runs as a user process, including a special process known as codice_2 which performs process creation and memory management by operating in conjunction with the microkernel. This is made possible by two key mechanisms: subroutine-call type interprocess communication, and a boot loader which can load an image containing the kernel and any desired set of user programs and shared libraries. There are no device drivers in the kernel. The network stack is based on NetBSD code. Along with its support for its own, native, device drivers, QNX supports its legacy, "io-net manager" server, and the network drivers ported from NetBSD. QNX interprocess communication consists of sending a message from one process to another and waiting for a reply. This is a single operation, called codice_3. The message is copied, by the kernel, from the address space of the sending process to that of the receiving process. If the receiving process is waiting for the message, control of the CPU is transferred at the same time, without a pass through the CPU scheduler.