2012年(135)
分类:
2012-03-31 09:45:15
原文地址:android系统特有的驱动 作者:小超hide
整理一下android在linux系统基础上加入的驱动,有几个比较重要的
使用的代码版本:android 2.2.2
Ashmem:
匿名共享内存驱动
Logger:
轻量级的log驱动
Binder驱动( Binder Driver):
基于OpenBinder驱动,为Android平台提供IPC的支持
能源管理( Android Power Management):
轻量级的能源管理,基于Linux的能源管理,为嵌入式系统做了优化
Alarm:
定时器驱动,用于唤醒设备
Low Memory Killer:
在缺少内存的情况下,杀死进程
Android PMEM:
物理内存驱动
Android的Ashmem的含义为:
Anonymous Shared Memory 匿名共享内存,通过内核的机制,为用户空间程序提供分配内存的机制。使内核的分配使用和管理更加高效。
Ashmem设备节点名称:
/dev/ashmem
Ashmem的代码路径:
kernel/include/linux/ashmem.h
kernel/mm/ashmem.c
在用户空间C libutil库对Asheme封装并提供接口:
system/core/include/cutils/ashmem.h
system/core/libcutils/ashmem-dev.c
system/core/libcutils/ashmem-host.c
Android的Binder驱动程序为用户层程序提供了IPC(进程间通信)的支持,Android整个系统的运行依赖Binder驱动
Binder设备节点名称:
/dev/binder
binder的代码路径:
kernel/include/linux/binder.h
kernel/drivers/staging/android/binder.c
在用户空间libutil工具库和Service
Manager守护进程调用Binder接口提供对整个系统的支持:
frameworks/base/cmds/servicemanager/
frameworks/base/include/utils/
frameworks/base/libs/utils/
Logger日志设备
Android的Logger驱动程序为用户层程序提供Log的支持,这个驱动作为一个工具来使用。无论底层源码和上层应用,我们都可以使用Logger进行调试
Logger有三个设备节点:
/dev/log/main
/dev/log/event
/dev/log/radio
Logger驱动的代码路径:
kernel/include/linux/logger.h
kernel/drivers/staging/android/logger.c
在用户空间logcat程序调用Logger驱动:
system/core/logcat/
Power Management:
Google添加了一个新的电源管理系统,主要包括几个文件
kernel/power/earlysuspend.c
consoleearlysuspend.c
wakelock.c
userwakelock.c
Alarm:
Alarm是一个硬件时钟,用于把设备从睡眠状态唤醒,同时它也提供了一个在设备睡眠时仍然会运行的时钟基准。
设备节点:
/dev/alarm
源码路径:
drivers/rtc/alarm.c
Low Memory Killer
Android使用这种机制,在系统内存不足(如某个程序发生了内存泄漏)的情况下,选择一个进程并将其Kill掉,这和linux中的OOM(out of memory)机制相似
源码路径:
drivers/staging/android/lowmemorykiller.c
PMEM:
主要作用就是向用户空间提供连续的物理内存区域,可以使audio,video,GPU这类的设备可以在其分配的内存上完美地工作
Pmem源码路径:
drivers/misc/pmem.c
include/linux/android_pmem.h