自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

颇锐克

stay hungry stay foolish

  • 博客(51)
  • 收藏
  • 关注

转载 C++中成员变量加上static或const关键字后的分析

C++中类成员变量加上static或const关键字后的初始化问题。在一个简单的C++类中定义如下这些变量:[cpp] view plain copy #include     using namespace std;    class TestVariable{      public:      TestVariable(){}      private:   

2017-06-30 16:58:34 535

转载 scons 工具使用

在unix/linux环境下用c/c++语言开发大中型项目时,你是否为写复杂的Makefile来编译、打包你的unix/linux c/c++程序,还需要对上万行、几十万代码进行开发和维护感到苦恼不已。”工欲善其事,必先利其器”,这里我将向大家介绍一种开源的软件构件利器——SConsSCons是下一代的软件构件工具,它跨平台,功能类似autoconf/automake, 它能帮助你更方便

2017-06-30 14:06:57 660

转载 scons 工具使用

在unix/linux环境下用c/c++语言开发大中型项目时,你是否为写复杂的Makefile来编译、打包你的unix/linux c/c++程序,还需要对上万行、几十万代码进行开发和维护感到苦恼不已。”工欲善其事,必先利其器”,这里我将向大家介绍一种开源的软件构件利器——SConsSCons是下一代的软件构件工具,它跨平台,功能类似autoconf/automake, 它能帮助你更方便

2017-06-30 14:06:49 1715

转载 ashmem 使用

我们知道,传统的IPC方式传递大块内存时,一般使用共享内存的方式。在Android Binder IPC中,有着自己独特的跨进程传递方式。它也同样,避免了内存拷贝的方式,可以让内存基址和偏移在进程间不断而且方便的传递。Android传递大内存块的方式稍有不同,这些大内存块往往位于特定的设备文件中,如pmem和ashmem(匿名共享内存:Anonymous Shared Memory),当然,也

2017-06-29 18:54:59 1525

转载 linux用户态和kernel之间共享内存 --- remap_pfn_range + mmap的实现方式

概述:内核的驱动程序使用remap_pfn_range()结合设备驱动文件的mmap操作来将内存共享至用户态-----------以下是内核态代码------struct file_operations Fops = {    .read = char_read,    .write =char_write,    .open = char_open,    .re

2017-06-28 13:37:35 5701

转载 mmap 认知

阅读目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap使用细节回到顶部mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面

2017-06-27 12:08:59 720

转载 Vim 常用命令

Vim中如何全选并复制2016-03-11 问见Vim中如何全选并复制?全部删除:按esc后,然后dG全部复制:按esc后,然后ggyG全选高亮显示:按esc后,然后ggvG或者ggVG介绍一下 vim. vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有. vi 有各种变种, 在不同的机器上常用不同的变种软件.

2017-06-27 11:05:02 479

转载 linux 内存管理

0、MMU概述1、地址变换过程2、访问权限3、高速缓存4、程序实例 0、MMU概述   内存管理单元(Memory ManagementUnit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件的内存访问权限检查。   运行大型操作系统的平台,一般都采用MMU进行内存管理   但对于带MMU的系统来说,内存中页命中率和换入换出所耗费的时间严重破坏了整个系统

2017-06-26 16:36:37 542

转载 STL set

1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户

2017-06-24 15:04:50 289

转载 mmap 详解

谨以此文纪念过往的岁月一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);

2017-06-24 13:50:52 5032

转载 ioctrl 使用

Linux设备驱动之Ioctl控制  大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/  用户程序所

2017-06-23 19:03:27 1326

转载 SIGABRT的可能原因

第三方库如glic检测到内部错误或者破坏约束条件 3种可能1、double free/free 没有初始化的地址或者错误的地址2、堆越界3、assert目前我所知的程序运行产生SIGABRT信号的原因有三个,若还有其他情况,敬请网友留言。(注:SIGABRT信号即signal 6的信号)一、多次free导致的SIGABRT[cpp]

2017-06-23 16:14:34 117109 7

转载 might——sleep spinlock

might_sleep():指示当前函数可以睡眠。如果它所在的函数处于原子上下文(atomic context)中(如,spinlock, irq-handler…),将打印出堆栈的回溯信息。这个函数主要用来做调试工作,在你不确定不期望睡眠的地方是否真的不会睡眠时,就把这个宏加进去。这个函数我在看代码时基本上是直接忽略的(因为我知道它实际上不干什么事),不过因为内核中很多函数一开始就会用一下它

2017-06-23 15:41:52 640

转载 android selinux

有时候会遇到selinux相关的问题,今天来做一下总结:打开和关闭selinux功能如果出现了selinux相关的权限拒绝,则在kernel log 或者android log中都有对应的”avc: denied”,当然也可能和selinux的模式有关系,我们需要首先要确认当时SELinux 的模式, 是enforcing mode 还是 permissve mode.如果

2017-06-23 10:55:38 8352 1

转载 dump stack(back trace)

在linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入:dump_stack();或 __backtrace();即可。dump_stack()在~/kernel/ lib/Dump_stack.c中定义void dump_stack(void){ printk(KERN_NOTICE "This architecture does not

2017-06-20 20:28:17 2953

转载 怎么退出fastboot模式10

怎么退出fastboot模式10匿名| 浏览 167273 次发布于2012-07-25 15:19最佳答案选里面的reboot重启不就是了。或者手机连接电脑进入adb,输入fastboot reboot。本回答由网友推荐评论(20)371376ywlylovesl采纳率:69%擅长:暂未定制

2017-06-19 16:17:03 4545 1

转载 GCC __builtin_expect的作用

将流水线引入cpu,可以提高cpu的效率。更简单的说,让cpu可以预先取出下一条指令,可以提供cpu的效率。如下图所示:+--------------------------------|取指令 | 执行指令 | 输出结果+--------------------------------|             | 取指令     | 执行+-----------------

2017-06-19 15:54:00 463

转载 《Linux内核设计与实现》读书笔记(十二)- 内存管理

《Linux内核设计与实现》读书笔记(十二)- 内存管理内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结 1. 内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3

2017-06-17 14:30:31 519

转载 list_for_each_entry

http://blog.sina.com.cn/s/blog_5e99b41e0100rxgf.htmlhttp://hi.baidu.com/shiftedmind/blog/item/1a7c8381e6a67fa56d8119da.html         在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体如下:

2017-06-17 11:02:21 536

转载 PAGE_ALIGN()

将物理地址addr修整为页边界地址(页的上边界)#define PAGE_ALIGN(addr)    (((addr)+PAGE_SIZE-1)&PAGE_MASK)        |------------|PAGE_ALGN(addr)        |            |        |            |        |

2017-06-17 10:40:16 2555

转载 android 原子操作

代码的实现位于文件system/core/include/cutils中http://androidxref.com/4.4.3_r1.1/xref/system/core/include/cutils/atomic.h  1617#ifndef ANDROID_CUTILS_ATOMIC_H18#define ANDROID_CUTILS_ATOMIC_H1920

2017-06-16 16:34:59 1606

转载 Android Recovery:功能简介。Recovery模式介绍

Android Recovery Theoryandroid Recovery:功能简介Android支持Recovery模式。在某些操作之后,系统会自动重启并进入到Recovery模式,用户按组合键开机(HOME+POWER),也可进入Recovery模式。该模式提供如下功能:1、擦除用户数据恢复系统到出厂模式,即擦除用户数据和缓存数据。2、系统升级系统升级的概念比较广,

2017-06-16 14:47:40 4207

转载 Android ota 升级

Android OTA升级原理和流程分析(一)--update.zip包的制作转载自:http://blog.chinaunix.net/uid-22028566-id-3533848.html         这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过程,来理解android系统中Recovery模式服务的工作原理。我们先

2017-06-16 13:48:56 1185

转载 Android运行时ART执行类方法的过程分析

在前面一篇文章中,我们分析了ART运行时加载类以及查找其方法的过程。一旦找到了目标类方法,我们就可以获得它的DEX字节码或者本地机器指令,这样就可以对它进行执行了。在ART运行时中,类方法的执行方式有两种。一种是像Dalvik虚拟机一样,将其DEX字节码交给解释器执行;另一种则是直接将其本地机器指令交给CPU执行。在本文中,我们就将通过分析ART运行时执行类方法的过程来理解ART运行时的运行原理。

2017-06-16 11:15:57 2110

转载 android init 进程分析

本文使用的软件版本Android:4.2.2Linux内核:3.1.10     本文及后续几篇文章将对Android的初始化(init)过程进行详细地、剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助。本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现。     Android本质上就是一个基于Linux内核的操作系统。

2017-06-16 11:13:09 370

转载 图像输出过程总结

上篇博客分析到SurfaceFlinger收到了VSync信号后,调用了handleMessageRefresh函数,这篇博客主要就是分析这个函数,我们先看看它的代码:[cpp] view plain copy void SurfaceFlinger::handleMessageRefresh() {      ATRACE_CALL();        stati

2017-06-15 11:18:58 1790

转载 匿名空间看swap 分区

看代码的时候,从能看到通过mmap映射一段匿名内存,但是为什么非要映射一段匿名内存呢,匿名内存到底是干啥用的?对这个问题一直不解,今天google了很多资料,总结一下自己理解的内容。     1 匿名内存的定义     匿名内存是指那些在文件系统里没有相对应的”储备文件“的那些内存,堆和栈空间的内存都属于匿名内存。    2 匿名内存的用途     匿名内存来源于交

2017-06-13 21:54:06 364

转载 linux 设备ioctrl

大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/  用户程序所作的只是通过命令码告诉驱动程序它想做什么,

2017-06-13 16:48:24 697

转载 gltexture map to the object

OpenGL学习:第六课(将不同纹理映射到不同面上)OpenGL可以把纹理映射到指定的图形的表面上。简单一点的,就是给平面映射纹理,比如一个四边形,一个长方体的6个面,都可以指定位图作为纹理映射到各个面上。关于将一个位图作为纹理映射到某个或者多个面上,可以学习Jeff Molofee的OpenGL系列教程。对于指定的多个纹理,要根据自己的需要映射到不同的面上,需要对位图创建一个数组

2017-06-13 14:31:11 705

转载 VSYNC信号传递流向

vsync信号源产生地1.硬件支持2.软件模拟SurfaceFlinger创建的init会初始创建HWComposervoid SurfaceFlinger::init() {    mHwc = new HWComposer(this,*static_cast(this));}HWComposer::HWComposer(        const

2017-06-10 10:15:59 577

转载 Gralloc 总结

从字面就可以看出来Gralloc接口是为了显示内存分配与释放 – Graphics Allocation。它的主要目的有三个:Ø  为应用分配显示用内存;Ø  可以把显示内存在不同进程间进行映射;Ø  同步通过加载gralloc抽象层(gralloc.xxx.so),可以打开fb设备(/dev/fb0)和gpu设备(/dev/graphic/),fb设备用于操作fram

2017-06-08 20:41:01 4182

转载 Android IBinder的linkToDeath介绍及情景模拟

最近查看Framework源码的时候,读到了AudioService处理音量的流程,在这里碰到了IBinder的linkToDeath()这个知识点,比较感兴趣,所以记录下来,并自己写demo尝试了一下。我们简单来看下AudioService处理静音这一块。 /frameworks/base/media/Java/Android/media/AudioManager.javapubli

2017-06-08 13:35:32 689

转载 Linux线程同步之互斥量(mutex)

互斥量(也称为互斥锁)出自POSIX线程标准,可以用来同步同一进程中的各个线程。当然如果一个互斥量存放在多个进程共享的某个内存区中,那么还可以通过互斥量来进行进程间的同步。互斥量,从字面上就可以知道是相互排斥的意思,它是最基本的同步工具,用于保护临界区(共享资源),以保证在任何时刻只有一个线程能够访问共享的资源。互斥量类型声明为pthread_mutex_t数据类型,在中有具体的定义。

2017-06-08 13:33:38 284

原创 code style

.repo/repo/hooks/tools$ ./clang-format -style=Google src.cpp > dst.cpp

2017-06-07 11:13:55 287

转载 Android图形缓冲区映射过程源码分析

android图形缓冲区分配过程源码分析中介绍了图形buffer的分配过程,图形buffer可以从系统帧缓冲区分配也可以从内存中分配,分配一个图形buffer后还需要将该图形缓冲区映射到分配该buffer的进程地址空间来,在Android系统中,图形buffer的管理由SurfaceFlinger服务来负责,在Android SurfaceFlinger服务启动过程源码分析中我们了解到Surf

2017-06-06 20:48:23 569

转载 AndroidO binder aligen

https://android-review.googlesource.com/#/c/349091/1/include/uapi/linux/android/binder.hbinder_fd_array_object starts with a 4-byte header,followed by a few fields that are 8 bytes whenANDROID_BINDE

2017-06-06 19:09:45 362

转载 android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进行了详细的分析,而在open过程中,定义了一个PreviewCallback,当时并未详细分析,即Open过程中,会自动开启预览过程,即会调用OneCa

2017-06-06 10:19:17 522

转载 android binder 机制 (ServiceManager)

Binder机制作为一种IPC通信机制,在Android系统中扮演了非常重要的角色,因此我也花了一些时间来研究它,按照我的理解,下面我将从4个方面来讲一下Binder,如有不对的地方,还希望大家多多指教。下面的例子都将以MediaServer来讲。一、ServiceManagerServiceManager在Binder系统中相当与DNS,Server会先在这里注册,然后Client会在这

2017-06-06 10:17:02 280

转载 Android 4.4 Graphic系统详解(2) VSYNC的生成

VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史

2017-06-06 10:09:39 490

转载 transact和onTransact的区别

谈transact 和onTransact需要先聊聊iBinderIBinder是什么呢?首先要明白,Android的远程调用(就是跨进程调用)就是通过IBinder实现的,下面是对android开发文档的翻译。IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的协议。不要直接

2017-06-06 10:07:24 476

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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