您的位置:首页 > 移动开发 > Android开发

Android系统特有的驱动

2015-10-12 18:30 441 查看
 

整理一下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

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: