![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
love_muzihai
这个作者很懒,什么都没留下…
展开
-
Linux内存管理(4):内存映射机制
https://blog.csdn.net/zhoudaxia/article/details/7909106转载 2018-08-20 14:42:11 · 214 阅读 · 0 评论 -
Linux内核进程调度schedule深入理解
一.说明本文以linux-2.4.10 为例主要分析Linux 进程调度模块中的schedule 函数及其相关的函数。另外相关的前提知识也会说明。默认系统平台是自己的i386 架构的pc。二.前提知识在进行schedule 分析之前有必要简单说明一下系统启动过程,内存分配使用等。这样才能自然过渡到schedule 模块。首先是Linux各个功能模块之间的依赖关系: ...转载 2018-08-15 20:49:18 · 2089 阅读 · 0 评论 -
task_struct的定义及注释
struct task_struct {volatile long state; //说明了该进程是否可以执行,还是可中断等信息unsigned long flags; //Flage 是进程号,在调用fork()时给出int sigpending; //进程上是否有待处理的信号mm_segment_t addr_limit; //进程地址空间,区分内核进程与普通进程在内存存放...转载 2018-08-15 17:20:38 · 3505 阅读 · 2 评论 -
kthread_run总结
1、kthread_run是一个宏定义,功能是创建并启动内核线程struct task_struct *ion_comm_kthread;wait_queue_head_t ion_comm_wq;atomic_t ion_comm_event = ATOMIC_INIT(0);atomic_t ion_comm_cache_event = ATOMIC_INIT(0);#...原创 2018-08-15 14:36:10 · 13082 阅读 · 1 评论 -
记录生命周期的kref
https://blog.csdn.net/qb_2008/article/details/6840387 kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。 kref的头文件在include/linux/kref.h,实现在...转载 2018-04-17 11:43:09 · 157 阅读 · 0 评论 -
linux管理区初始化 一
1、获取物理内存从DTS中获取物理内存arch/arm/boot/dts/vexpress-v2p-ca9.dts: memory@60000000 { device_type = "memory"; reg = <0x60000000 0x40000000>; };根据上面的dts,在start_kernel-->s...原创 2019-05-04 22:50:44 · 296 阅读 · 0 评论 -
由Asset中的double free引发的Android系统及APP崩溃问题分析
http://blog.csdn.net/songjinshi/article/details/52816352前言这个问题在来小米之前就遇到并解决过,当时的解决方案与朴老师的初步解决方案一样,本文在之前的初步分析结果之上进一步进行了深入分析,最终得出了当前看起来相对合理并符合原来架构设计的最终方案。 文中引用了朴老师抓的backtrace,同时在进一步分析的过程中朴老师也提出的大量有建设性的问题...转载 2018-03-08 16:27:09 · 624 阅读 · 0 评论 -
Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的。Client转载 2017-12-24 22:08:15 · 247 阅读 · 0 评论 -
Mtk Hal 架构
原创 2017-10-21 22:06:41 · 1246 阅读 · 1 评论 -
android6.0源码分析之Runtime的初始化
原文:http://blog.csdn.net/yangzhihuiguming/article/details/51697801android源码分析之Runtime的初始化Android运行时作为android架构的一部分,起着非常重要的作用,它和核心库(Core Libraries)组成了Android运行时库层。本文将依据android源码对AndroidRun转载 2017-03-24 15:51:28 · 342 阅读 · 0 评论 -
内核看门狗简介
MTK 平台:wd_common_drv.cstatic int kwdt_thread(void *arg){ struct sched_param param = {.sched_priority = 99 }; struct rtc_time tm; struct timeval tv = { 0 }; /* android time */ struct rtc_time原创 2017-03-23 20:19:58 · 1474 阅读 · 0 评论 -
linux下i2c驱动笔记
原文http://blog.sina.com.cn/s/blog_63f31f340101byb2.html1. 几个基本概念1.1. 设备模型由 总线(bus_type) + 设备(device) + 驱动(device_driver) 组成,在该模型下,所有的设备通过总线连接起来,即使有些设备没有连接到一根物理总线上,linux为其设置了一个内部的、虚拟转载 2016-05-17 20:48:25 · 405 阅读 · 0 评论 -
Android 4.0 Camera架构分析之preview和takePicture
上篇文章介绍了,Camera初始化的过程,完成初始化之后就可以使用Camera提供的以下功能了1.预览preview2.视频录制3.拍照和参数设置打开Camera第一键事情就是预览取景preview的动作,我们先从Camera app分析起 。所有拥有拍照功能的应用,它在预览时候都要实现SurfaceHolder.Callback接口,并实现其surfaceCr转载 2016-02-26 23:29:35 · 559 阅读 · 0 评论 -
Android 4.0 Camera架构分析之Camera初始化
Android Camera 采用C/S架构,client 与server两个独立的线程之间使用Binder通信,这已经是众所周知的了。这里将介绍Camera从设备开机,到进入相机应用是如何完成初始化工作的。 首先既然Camera是利用binder通信,它肯定要将它的service注册到ServiceManager里面,以备后续Client引用,那么这一步是在哪里进行的呢?细心的人会转载 2016-02-26 22:40:53 · 450 阅读 · 0 评论 -
内核中断
1. arm平台的中断arm核心拥有2个外部中断线,IRQ和FIQ;这两根中断线连接到中断控制器上;中断控制器(IC)利用IRQ/FIQ向arm核报告外部中断的产生;IC在上报中断之前,如果同时有多个中断产生,就要按照优先级进行排队,把优先级最高的中断送至“当前服务寄存器”,也就是报告给arm核,“当前服务寄存器”需要在中断服务代码中(在内核的中断服务公共代码中)进行清除,以允许新的中转载 2016-02-22 20:07:33 · 455 阅读 · 0 评论 -
makefile详解 函数 foreach
原文地址:函数 foreach if call origin shell">makefile详解 函数 foreach if call origin shell作者:清清makefile详解 函数 foreach if call origin shell 控制make函0推荐四、foreach 函数 foreach函数和别的函数非常的不一样。因为转载 2014-03-17 18:19:00 · 911 阅读 · 0 评论 -
Android5.0 Camera HAL3 源代码分析
Android5.0对camera framework层进行了较大的调整,使用了支持HAL3的Camera3Device架构。下面就分析一下这个架构的结构和主要代码逻辑。HAL3的设计思想: 其实HAL的代码复杂但是理清楚他的设计思想后还是比较简单的。Camera应用端与CameraService的交互还是一模一样的,只是以前的CameraClient变成了C转载 2017-11-21 00:01:22 · 511 阅读 · 0 评论 -
Android Camera HAL3中拍照Capture模式下多模块间的交互与帧Result与帧数据回调
1. HAL3中Camera2Client下的take picture的入口函数作为标准的capture picture功能的入口,主要完成了以下两件事情:updateProcessorStream(mJpegProcessor, l.mParameters);mCaptureSequencer->startCapture(msgType)对于JpegProcess转载 2017-11-21 00:06:46 · 822 阅读 · 0 评论 -
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现。Server获得了Service Manager远程接口之后,就要转载 2017-12-24 22:07:25 · 304 阅读 · 0 评论 -
浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?转载 2017-12-24 22:05:02 · 259 阅读 · 0 评论 -
浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client、Server、Service Manager和驱动程序Binder四个组件构成。本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Ser转载 2017-12-24 22:02:54 · 315 阅读 · 0 评论 -
Android进程间通信(IPC)机制Binder简要介绍和学习计划
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0xcd.转载 2017-12-24 22:01:55 · 217 阅读 · 0 评论 -
Android系统Camera录像过程分析
http://blog.csdn.net/tankai19880619/article/details/16848135分析下系统Camera和MediaRecorder(libstagefright中MPEG4Writer以及CameraSource的关系)。 首先,通过图示、看看Android系统Camera录像时的调用时序:1.录像命令时序2转载 2017-12-03 23:54:47 · 1306 阅读 · 0 评论 -
camera 拍照流程
1.拍照命令时序图2.拍照数据回调时序图转载 2017-12-03 23:50:31 · 1161 阅读 · 0 评论 -
addr2line命令解析native backtrace
内容[DESCRIPTION]有时遇到ANR问题,查看SWT_JBT_TRACES文件,发现有些是native backtrace,且GAT-LogView目前无法解析这种不规则的native backtrace。这时可以找到带symbols信息的对应lib库,使用addr2line解析pc指针,就可以得到native backtrace对应的代码行号。 [SO原创 2017-05-19 16:33:02 · 3544 阅读 · 3 评论 -
自旋锁小结
使用自旋锁四个原则:1、持有自旋锁时要禁止中断 比如持有锁的程序执行到中间时中断发生,中断函数又要获取这个锁,就可能发生死锁。2、自旋锁必须尽可能短的时间持有。其他进程会自旋很久才能获取锁。3、持有自旋锁时不能睡眠4、持有自旋锁时,抢占在相关处理器要禁止。自旋锁函数:void spin_lock(spinlock_t *lock);void spin_l原创 2017-12-02 23:41:19 · 299 阅读 · 0 评论 -
修改boot.img
http://hi.baidu.com/juicewb/item/fff12d110a23dfa7ffded565修改boot.img1、备份boot.img(前提是必须有root权限的手机)adb shellsucat /proc/mtd备份boot.img命令举例如下(切记手机不同,命令不一定相同,请核对自己手机上一步的显示):cat /de原创 2014-03-17 17:37:31 · 2671 阅读 · 0 评论