Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353365
  • 博文数量: 197
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 303
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-02 14:21
文章分类

全部博文(197)

文章存档

2014年(89)

2013年(108)

我的朋友

分类: LINUX

2013-11-14 16:52:59

原文地址: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

物理内存驱动

 

AndroidAshmem的含义为:

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

 

AndroidBinder驱动程序为用户层程序提供了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日志设备

AndroidLogger驱动程序为用户层程序提供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

阅读(1218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~