This fixes a longstanding issue (apparently since tc3) where
a service with an argument would corrupt the heap. The more
arguments, the more corruption :|. This will probably also end up
making key-code bound services more reliable (ie: bugreports triggered
via the keyboard)

Several Android builtin packages would pick up the system resources
about touchscreen. If there is no touchscreen, the ones suffixing
with '-notouch' would be taken. However, by default, resource layout
doesn't come with '-notouch', and Beagleboard has no touchscreen on
board physically. Thus, Android core will crash due to lacking of
proper resources.

Our solution is to write a dedicated daemon to register userspace
input device as a fake touchscreen device. EventHub would regard
it as one of the input source, and no Android packages would complain.

ARM architecture reference manuals for ARMv6 & ARMv7 state that the
use of 'swp' instruction is deprecated ARMv6 onwards. These
architectures provide the load-linked, store-conditional pair of
ldrex/strex whose use is recommended in place of 'swp'. Also, the
description of the 'swp' instruction in the ARMv6 reference manual
states that the swap operation does not include any memory barrier
guarantees. This fix attempts to address these issues by providing
an atomic swap implementation using ldrex/strex.