Difference between revisions of "Android Kernel Features"
(add links to power management and security pages) |
(→List of Kerenl features unique to Android) |
||
Line 1: | Line 1: | ||
− | == List of | + | == List of Kernel features unique to Android == |
+ | === Binder === | ||
* Binder - corba-like IPC | * Binder - corba-like IPC | ||
** used instead of SysV IPC for interprocess communication | ** used instead of SysV IPC for interprocess communication | ||
** The Linux version of Binder was originally derived from a project by PalmSource to implement a CORBA-like message-passing or method invocation system. Documentation on that system is at: http://www.angryredplanet.com/~hackbod/openbinder/docs/html/index.html | ** The Linux version of Binder was originally derived from a project by PalmSource to implement a CORBA-like message-passing or method invocation system. Documentation on that system is at: http://www.angryredplanet.com/~hackbod/openbinder/docs/html/index.html | ||
+ | |||
+ | === ashmem === | ||
* ashmem - Android share memory | * ashmem - Android share memory | ||
+ | |||
+ | === pmem === | ||
* PMEM - Process memory allocator | * PMEM - Process memory allocator | ||
+ | |||
+ | === logger === | ||
* logger - system logging facility | * logger - system logging facility | ||
** This is the kernel support for the 'logcat' command | ** This is the kernel support for the 'logcat' command | ||
** The kernel driver for the serial devices for logging are in the source code drivers/android/logging.c | ** The kernel driver for the serial devices for logging are in the source code drivers/android/logging.c | ||
** See [[Android logger]] for more information | ** See [[Android logger]] for more information | ||
+ | |||
+ | === wakelocks === | ||
* wakelock - used for power management | * wakelock - used for power management | ||
** Holds machine awake on a per-event basis until wakelock is released | ** Holds machine awake on a per-event basis until wakelock is released | ||
** See [[Android Power Management]] for detailed information | ** See [[Android Power Management]] for detailed information | ||
+ | |||
+ | === oom handling === | ||
* oom handling modifications | * oom handling modifications | ||
** lowmem notifications | ** lowmem notifications | ||
+ | |||
+ | === alarm === | ||
* alarm | * alarm | ||
+ | |||
+ | === paranoid network security=== | ||
* paranoid network security | * paranoid network security | ||
** See [[Android_Security#Paranoid_network-ing]] | ** See [[Android_Security#Paranoid_network-ing]] | ||
+ | |||
+ | === timed gpio === | ||
+ | Generic gpio is a mechanism to allow programs to access and manipulate gpio registers from user space. | ||
+ | |||
+ | "Timed gpio" appears to be a system to allow for similar gpio manipulation, but with an added capability | ||
+ | to automatically set a value in a gpio after a specified timeout. | ||
+ | |||
+ | On my ADP1, there is a driver at: | ||
+ | |||
+ | I'm not sure who uses this, or how it is used, but this is a directory with the following items: | ||
+ | <pre> | ||
+ | # cd /sys/bus/platform/drivers/timed-gpio | ||
+ | # ls -l | ||
+ | --w------- 1 0 0 4096 Nov 13 02:11 bind | ||
+ | lrwxrwxrwx 1 0 0 0 Nov 13 02:11 timed-gpio -> ../../../../devices/platform/timed-gpio | ||
+ | --w------- 1 0 0 4096 Nov 13 02:11 uevent | ||
+ | --w------- 1 0 0 4096 Nov 13 02:11 unbind | ||
+ | </pre> | ||
+ | |||
+ | Also, there is a device at: | ||
+ | <pre> | ||
+ | # cd /sys/devices/platform/timed-gpio | ||
+ | # ls -lR | ||
+ | .: | ||
+ | lrwxrwxrwx 1 0 0 0 Nov 13 01:34 driver -> ../../../bus/platform/drivers/timed-gpio | ||
+ | -r--r--r-- 1 0 0 4096 Nov 13 01:34 modalias | ||
+ | drwxr-xr-x 2 0 0 0 Nov 13 01:34 power | ||
+ | lrwxrwxrwx 1 0 0 0 Nov 13 01:34 subsystem -> ../../../bus/platform | ||
+ | -rw-r--r-- 1 0 0 4096 Nov 13 01:34 uevent | ||
+ | |||
+ | ./power: | ||
+ | -rw-r--r-- 1 0 0 4096 Nov 13 01:34 wakeup | ||
+ | </pre> | ||
+ | |||
+ | Possibly this means that one of the GPIO pins on the ADP1 is tied to a power wakeup event??? | ||
== Resources == | == Resources == |
Revision as of 19:15, 12 November 2009
Contents
List of Kernel features unique to Android
Binder
- Binder - corba-like IPC
- used instead of SysV IPC for interprocess communication
- The Linux version of Binder was originally derived from a project by PalmSource to implement a CORBA-like message-passing or method invocation system. Documentation on that system is at: http://www.angryredplanet.com/~hackbod/openbinder/docs/html/index.html
ashmem
- ashmem - Android share memory
pmem
- PMEM - Process memory allocator
logger
- logger - system logging facility
- This is the kernel support for the 'logcat' command
- The kernel driver for the serial devices for logging are in the source code drivers/android/logging.c
- See Android logger for more information
wakelocks
- wakelock - used for power management
- Holds machine awake on a per-event basis until wakelock is released
- See Android Power Management for detailed information
oom handling
- oom handling modifications
- lowmem notifications
alarm
- alarm
paranoid network security
- paranoid network security
timed gpio
Generic gpio is a mechanism to allow programs to access and manipulate gpio registers from user space.
"Timed gpio" appears to be a system to allow for similar gpio manipulation, but with an added capability to automatically set a value in a gpio after a specified timeout.
On my ADP1, there is a driver at:
I'm not sure who uses this, or how it is used, but this is a directory with the following items:
# cd /sys/bus/platform/drivers/timed-gpio # ls -l --w------- 1 0 0 4096 Nov 13 02:11 bind lrwxrwxrwx 1 0 0 0 Nov 13 02:11 timed-gpio -> ../../../../devices/platform/timed-gpio --w------- 1 0 0 4096 Nov 13 02:11 uevent --w------- 1 0 0 4096 Nov 13 02:11 unbind
Also, there is a device at:
# cd /sys/devices/platform/timed-gpio # ls -lR .: lrwxrwxrwx 1 0 0 0 Nov 13 01:34 driver -> ../../../bus/platform/drivers/timed-gpio -r--r--r-- 1 0 0 4096 Nov 13 01:34 modalias drwxr-xr-x 2 0 0 0 Nov 13 01:34 power lrwxrwxrwx 1 0 0 0 Nov 13 01:34 subsystem -> ../../../bus/platform -rw-r--r-- 1 0 0 4096 Nov 13 01:34 uevent ./power: -rw-r--r-- 1 0 0 4096 Nov 13 01:34 wakeup
Possibly this means that one of the GPIO pins on the ADP1 is tied to a power wakeup event???
Resources
- Peter McDermott's excellent description of his work to port Android to the Nokia N810.
- See http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Porting-Android-to-a-new-device/
- Also, see his annotated list of modified and added kernel files, at: http://www.linuxfordevices.com/files/misc/porting-android-to-a-new-device-p3.html
- Jollen Chen's excellent presentation on system-level Android features, including an overview of kernel features unique to Android: Note: Parts of the presentation are in Chinese