自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 使用gdb 查看coredump堆栈信息

简介 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的。 调试的话输入: gdb filename core filename就是产生core文件的可执行文件,core就是产生的dump文件 查看栈信息 —...

2020-04-15 11:03:17 88 0

转载 gcc、cc、c++、g++命令行详解

1、gcc包含的c/c++编译器 gcc、cc、c++、g++ gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2、gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序 gcc test.c -o test这样将编译出一...

2019-10-17 10:10:11 45 1

转载 linux ldconfig命令,环境变量文件配置详解

ldconfig 参考:http://man.linuxde.net/ldconfig https://blog.csdn.net/chenzixun0/article/details/56278632 主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.con...

2019-10-16 14:42:40 85 0

转载 configure, Makefile.am, Makefile.in,Makefile之间的关系

1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。 your source files --> [autoscan*] --> [config...

2019-10-15 15:48:33 80 0

原创 温控daemon(八)总结

温控的daemon,可以分为device、sensor、algorithm三大块。 1. device一般为cpu、gpu等,具体可以调频、拔核等。 2. sensor一般为温度的sensor,每个sensor会启动两个thread: 其中一个thread用来检测sensor的温度,上层...

2019-02-28 15:47:09 330 0

原创 温控驱动(五)dts参数解析、节点作用

我们先看下dts中,各个参数的分析如下: poll-ms代表KTM检测温度的间隔 limit-temp KTM调频的温度 temp-hysteresis 当温度降到limit-temp - temp-hysteresis 频率升到前面档位 freq-step 每次调频的步长(就是cpu频率...

2019-02-27 15:59:11 579 0

原创 功能机用上下键实现MoveEvent

这个功能的用处功能手机(这里说的功能机只是没有触屏,单还是Android系统)能在浏览器中使用上下键实现移动光标的目的,这里我们大致分析流程。 我们知道普通按键,会在KeyboardInputMapper的process执行,比如这里我们要关注的上下左右按键。 void KeyboardIn...

2019-01-22 15:11:34 493 0

原创 Zygote进程

Zygote简介 zygote是Android一个非常重要的进程,和init、systemServer进程这三个进程是Android系统非常重要的进程。 Linux的进程是通过fork产生,fork出来的进程除了一些核心数据结构和父进程不一样,其余的内存映像都是和父进程共享的。通常子进程for...

2019-01-22 15:11:26 506 0

原创 android log各个文件整理

这篇博客我们罗列下各个log日志的头文件的使用。 java层: 1.android.util.Log; 2.android.util.Slog; 3.android.util.Rlog 最后通过了native调用了__android_log_buf_write函数,这个函数是通过了log...

2019-01-22 15:11:19 820 0

原创 Android8.0 user版本adb 的log输出到串口中

我们在调试adb时不能使用logcat,这个时候我们需要把adb的log输出到串口,init就能实现,我们仿造init的代码,在adbd的main函数中调用了如下函数InitKernelLogging(nullptr);这个函数在init进程中也有调用。这个函数的意思把标准输入输出,标准错误全部写...

2019-01-22 15:11:14 575 0

原创 logging.h提供的功能

这篇博客我们来分析logging.h提供的功能,引用这个文件可以#include <android-base/logging.h>,而这个文件在logging.cpp中实现。 首先我们来看下其注释:提供了一个c++ stream的接口,而且PLOG会打印出具体的错误,...

2019-01-22 15:11:08 1108 0

原创 android Init进程新特性(截止android 8)

这一节主要补充,在现在android 8上和之前比的新特性(仅仅是自己新发现,不清楚哪个版本加入或者是以前自己没发现)。 1. init.rc中加入了对vendor下面手机厂商自己的rc文件,这样不用重新编译bootimage,只要push自己rc文件到vendor/etc/init/hw。而且...

2019-01-22 15:11:03 476 0

原创 Android9.0 应用待机群组

一、概述  Android 9 引入了一项新的电池管理功能,即应用待机群组。应用待机群组可以基于应用最近使用时间和使用频率,帮助系统排定应用请求资源的优先级。 根据使用模式,每个应用都会归类到五个优先级群组之一中。 系统将根据应用所属的群组限制每个应用可以访问的设备资源。 五个群组按照以下特性...

2019-01-22 15:10:58 4339 0

原创 Android 8.0 App Standby

一、概述 低电耗模式和应用待机模式是从Android M引入的新特性,之前一直没有分析,低电耗模式就是Doze,应用待机模式就是 App Standby。 Doze模式我们之前分析过了,Doze模式在Android N又有修改,Android 6.0(API 级别 23)引入了低电耗模式,当用...

2019-01-22 15:10:52 847 0

原创 温控daemon(七)ss算法

monitor算法是一种静态算法,超过阈值就限制为多少频率,或者做什么处理,ss不一样它是一种动态算法。 下面我们就从代码层面进行分析。也是在main函数中调用了ss_algo_init函数。 1. ss_algo_init 我们来看下这个函数的前半段函数,这里主要先是过滤配置中的setti...

2019-01-22 15:10:42 810 1

原创 温控daemon(六)Monitor算法

Monitor算法温控的常见算法之一,在main函数中调用了thermal_monitor函数.Monitor算法是一种静态算法,当超过每一个设置的温度值就会调频,当小于clr的温度就会停止调频算法。 1. thermal_monitor函数 thermal_monitor函数先是从dev_l...

2019-01-22 15:10:37 870 0

原创 温控daemon(五)socket监控

这篇博客我们主要分析thermal-engine的socket监控,包括应用client的注册回调,以及client发送thermal消息都是通过socket。在thermal-engine启动分析的时候我们看到其创建了4个socket。 1. socket初始化 我们从main函数的ther...

2019-01-22 15:10:32 623 0

原创 温控daemon(四)加载配置文件

这篇博客我们主要分析thermal-engine中如何加载配置文件,包括代码中和配置文件。这里主要分析下thermal和ss算法的配置。 加载配置,在main函数中主要涉及如下代码。 init_settings(&thermal_settings); pid_init_...

2019-01-22 15:10:26 547 0

原创 温控daemon(二)启动参数解析、device初始化

这样我们主要开始将thermal-engine的流程。 1. thermal-engine启动 先从启动开始说起,在init.target.rc中定义了thermal-engine为一个service,并且属于main class,随main服务一起启动。 service thermal-...

2019-01-22 15:10:09 1517 1

原创 温控daemon(三)sensor初始化

既上一篇博客继续分析main函数,上一篇博客我们分析了devices_init device的初始化,这篇博客先是分析保持KTM工作,后面主要分析sensor的初始化,。 1. 保持KTM工作 我们先来看如下,先是创建了一个kernel的client,然后因为有kernel 的device,所...

2019-01-22 15:10:03 865 0

原创 温控daemon(一)概述

thermal-engine是一套通过检测android设备上的各个sensor是否温度过高,来限制cpu频率、cpu热插拔、gpu频率、carmera帧率,modem、LCD等各个模块的性能。 温控模块分为用户层的thermal-engine和kernel层的KTM,当thermal-engi...

2019-01-22 15:09:58 1196 0

原创 按键是如何知道分发给哪个应用进程

之前分析按键的博客,我们分析了按键的流程,但是对按键具体在InputFlinger中分发给哪个进程这块没有分析。 WMS设置焦点 我们先来看WMS的updateFocusedWindowLocked函数,当Window窗口或者焦点有变化都会调用这个函数,这个函数先调用findFocusedWi...

2019-01-22 15:09:52 1190 0

原创 Android7.0 init.rc流程分析

在http://blog.csdn.net/kc58236582/article/details/52247547这篇博客中,我们分析了init进程的流程,现在我们结合代码主要分析init.rc脚本的流程。   首先我们会加载原生的init.rc,然后我们自己的一些内容放在自己的init.rc...

2019-01-22 15:09:47 2203 0

原创 android log丢失(三)动态切换logd机制和kernel机制

之前我们分析了如何修改版本使log机制变成kernel的log机制。这篇博客我们继续修改可以动态切换,这样方便平时log丢失时调试。   我们先来看liblog库的编译mk文件,这个文件中主要修改了对使用使用logd 使用不同文件进行编译这块做了修改,增加了log_write_common.c...

2019-01-22 15:09:42 2141 1

原创 Android7.0 Doze模式分析(三)alarm

上篇博客分析了Doze模式下WakeLock,这篇我们分析Alarm。 白名单 首先我们从白名单开始,在DeviceIdleController中会设置alarm的白名单。   public final class LocalService { public vo...

2019-01-22 15:09:37 2896 1

原创 Android7.0 Doze模式分析(二)wakelock

前面我们介绍Doze模式的时候介绍过WakeLock白名单,WakeLock进入Doze接口等。这篇博客我们详细分析下,WakeLock在Doze模式下如何生效。   设置白名单 在DeviceIdleController中我们调用PowerManagerService的如下接口,来设置Wa...

2019-01-22 15:09:32 2918 1

原创 Android7.0 Doze模式分析(一)Doze介绍 & DeviceIdleController

 参考:http://blog.csdn.net/gaugamela/article/details/52981984 在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。  在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。 在之前的博...

2019-01-22 15:09:25 5310 6

原创 Android6.0 亮屏灭屏流程(DisplayPowerControler、WMS)(二)亮度设置

上一篇博客我们主要分析了在setScreenState中调用PhoneWindowManager的一些流程,在setScreenState中先是调用了DisplayPowerState的setScreenState函数。上篇博客我们没有分析,这篇博客我们先从这个函数开始分析,主要分析下亮度的设置流...

2019-01-22 15:09:19 3694 3

原创 将三方apk放到固定目录

在Android系统中想要把apk文件放到固定目录中,有两个方法 1. 使用PRODUCT_COPY_FILES变量 在Android.mk,使用如下 PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/NotePadPlus.apk:syste...

2019-01-22 15:09:14 1200 0

原创 Android6.0关于预置三方app卸载(三) 扫描system/third_app目录

之前两篇博客分析了三方应用如何安装的问题,但是两个方法都有问题 1.调用接口安装的,可能Launcher启动后还没安装完。 2.而copy到data/app下又会有两份apk问题。 这篇博客我们用另一种方法,就是放在system/third_app下,开机的时候直接扫描这个目录。然后我们在d...

2019-01-22 15:09:08 3562 1

原创 Android PKMS拦截adb安装应用

我们再PKMS汇总拦截adb 安装的应用,在分析PKMS的时候我们也知道,在installPackageAsUser有如下代码,代表是adb安装的。 if ((callingUid == Process.SHELL_UID) || (callingUid == Process....

2019-01-22 15:09:02 2140 0

原创 Android6.0 init 深入分析

之前写过一篇关于android5.0 init的介绍,这篇博客是介绍android6.0init,之前有的代码介绍不详细。而且分析 解析init.rc那块代码也没有结合init.rc介绍。 一、 main函数的一些准备工作 下面我们分析下源码: int main(int argc, cha...

2019-01-22 15:08:56 4796 3

原创 Android6.0 按键kl文件加载过程分析

在之前按键过程分析的几篇博客中,我分析过关于按键kl文件的加载,但是讲的不是非常详细,这篇博客主要把kl文件加载过程单独拉出来分析下。   1. 获取InputDeviceIdentifier的name 以及 Device的创建 InputDeviceIdentifier的name 非常重要...

2019-01-22 15:08:50 8591 2

原创 Android6.0 属性系统

属性在android中非常重要,我们基本的不多介绍了,主要说下其用法,原理等。   一、java层获取属性 在java层主要通过SystemProperties这个类来访问Android的系统属性,通过一系列的native函数。 public class SystemProperties...

2019-01-22 15:08:45 4222 0

原创 android6.0 power显示(亮度等)深入分析(二)DisplayManagerService

上篇博客我们分析了,PowerManagerService和DisplayPowerController这两个类,我也提到了和android5.1的变化,把背光这块放到了DisplayManagerService中了,之前这块没有分析过,今天分析下DisplayManagerService和背光的...

2019-01-22 15:08:39 6249 2

原创 android6.0 power显示(亮度等)深入分析(一)PowerManagerService & DisplayPowerController

之前android5.1我们分析过power,但是那篇博客从整体分析显得有些杂乱,这几篇博客都从power的功能来分析,个人觉得更好理解。   一、PowerManagerService的显示相关函数 由于之前博客都分析过,我们就直接进入PowerManagerService的和显示相关的主...

2019-01-22 15:08:34 5533 2

原创 Android6.0 按键流程(七)无线鼠标右键无效 -- Framework层

之前我们分析了无线鼠标右键无效,hal层的分析,我们可以把修改成返回键。 uint32_t CursorButtonAccumulator::getButtonState() const { uint32_t result = 0; if (mBtnLeft) { ...

2019-01-22 15:08:28 1941 0

原创 Android6.0 按键流程(六)应用进程处理按键消息

在之前的一篇按键流程处理中我们已经分析过了应用进程处理按键消息:http://blog.csdn.net/kc58236582/article/details/49928627我们也可以看下: 这边我们再单独整理下应用进程处理按键消息:   一、InputStage的各个流程 我们先来看s...

2019-01-22 15:08:23 3101 0

原创 Android6.0 按键流程(五)无线鼠标右键无效 -- hal层

最近在我们的手机上碰到这样一个问题,用otg连接无线鼠标,发现右键没反应。   于是先用getEvent命令:查看其扫描码,然后再去kl文件中,结果没找到这个扫描码对应的键盘码。 于是结合之前分析的按键流程,怀疑按键流程最后没走KeyboardInputMapper,就在InputReade...

2019-01-22 15:08:06 2790 0

原创 Android6.0 按键流程(四)registerInputChannel函数

这篇博客我们接上面一篇博客,回答上篇博客中,最后的connection对象是如何来的。   一、InputManagerService的registerInputChannel方法 我们先从InputManagerService的registerInputChannel方法分析: ...

2019-01-22 15:08:00 3841 0

提示
确定要删除当前文章?
取消 删除