自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 收藏
  • 关注

转载 linux下devicetree中惯用的of函数

linux下devicetree中常用的of函数 从device_node中获取信息: int of_property_read_u8_array(const struct device_node *np, const char *propname,u8 *out_values, size_t sz); int of_property_read_u16_array(const struct d

2017-04-19 17:01:09 645

转载 Ubuntu error: insufficient permissions for device(解决adb shell问题)

今天在Linux下连接平板usb,试用adb shell时出现error: insufficient permissions for device, 而且我们输入adb devices显示:xxnan@xxnan-pt:~$ adb devicesList of devices attached ???????????? device那么我们怎么解决它呢?首先在终端查看usb的ID,输入

2017-04-19 16:58:57 1668

转载 ubuntu下fastboot找不到devices

在ubuntu下,输入lsusb命令,显示Bus 001 Device 004: ID 0bb4:0c02 High Tech Computer Corp. Dream / ADP1 / G1 Phone (Debug) Bus 001 Device 002: ID 80ee:0021 第一个Device是我的手机,因此说明ubuntu已经检测到这个设备了。 另外virtualbox的活动u

2017-04-19 16:53:36 1846

转载 Linux电源管理-Suspend/Resume流程

前言根据上一节linux电源管理-概述可知,linux电源管理存在的几种方式,如何查看这几种方式,以及最后的如何睡眠唤醒等。通过echo mem > /sys/power/state就可以达到睡眠,所以可以根据此节点的sys代码分析suspend的流程。suspend代码分析在手机端执行如下命令:echo mem > /sys/power/state根据sys节点的属性命令规则,可以此节点的实现代码

2016-11-19 14:14:13 1859

转载 Makefile 函数大全

8.1 Function Call SyntaxA function call resembles a variable reference. It looks like this: $(function arguments)or like this: ${function arguments}Here function is a funct

2016-01-05 14:24:39 1403

转载 C++封装、继承、多态

C++封装继承多态总结面向对象的三个基本特征 面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用! 封装 什么是封装? 封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念

2015-12-23 11:16:30 746

转载 SELinux深入理解

1. 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。Security-Enhanced Linux (SELinux)由以下两部分组成:1) Kernel SELinux模块(/kernel/security/selinux)2) 用户态工具SELinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Li

2015-12-11 11:49:03 1353

转载 深入理解SELinux SEAndroid(结局)

二 SEAndroid源码分析 有了上文的SELinux的基础知识,本节再来看看Google是如何在Android平台定制SELinux的。如前文所示,Android平台中的SELinux叫SEAndroid。 先来看SEAndroid安全策略文件的编译。1. 编译sepolicy Android平台中:external/sepolicy:提供了Android平台中的安全策略源文件。同时

2015-12-11 11:36:35 633

转载 深入理解SELinux SEAndroid之二

3) File/File System 打label前面一节中,读者见识到了DT和TT。不过这些描述的都是Transition,即从某种Type或Domain进入另外一种Type或Domain,而上述内容并没有介绍最初的Type怎么来。在SELinux中,对与File相关的死货(比“死东西”少些一个字)还有一些特殊的语句。 直接看SEAndroid中的文件吧。[external/sepolicy

2015-12-11 11:06:38 1121

转载 深入理解SELinux SEAndroid(第一部分)

SEAndroid是Google在Android 4.4上正式推出的一套以SELinux为基础于核心的系统安全机制。而SELinux则是由美国NSA(国安局)和一些公司(RedHat、Tresys)设计的一个针对Linux的安全加强系统。 NSA最初设计的安全模型叫FLASK,全称为Flux Advanced Security Kernel(由Uta大学和美国国防部开发,后来由NSA将其开源),当

2015-12-11 10:29:01 1569

转载 Android 4.4(KitKat)中VSync信号的虚拟化

原文地址:http://blog.csdn.net/jinzhuojun/article/details/17293325Android 4.1(Jelly Bean)引入了Vsync(Vertical Syncronization)用于渲染同步,使得App UI和SurfaceFlinger可以按硬件产生的VSync节奏来进行工作。关于VSync的介绍详见博文http://www.androidp

2015-12-04 17:31:05 899

转载 Android 4.4(KitKat)中的设计模式-Graphics子系统

原文地址:http://blog.csdn.net/jinzhuojun/article/details/17427491本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的身影。光是本

2015-12-04 17:21:28 698

转载 Android编译过程详解(三)

前面两节讲解了自定义Android编译项和创建Product产品配置文件,除了编译和定义产品相关环境变量外,还需要定义Board相关环境变量。1. build/core/config.mk109 # --------------------------------------------------------------- 110 # Define most of the global var

2015-12-04 11:50:02 633

转载 Android编译过程详解(二)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html Android编译过程详解(三):http:/

2015-12-04 11:42:10 432

转载 Android编译过程详解(一)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.htmlAndroid编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.htmlAndroid编译过程详解(三):http://www.cnblogs.com

2015-12-04 11:23:20 1796

转载 Android编译过程详解(一)

Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html    Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html    Android编译过程详解(三):http:

2015-12-04 11:21:05 531

转载 Android.mk 文件语法详解

0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。Android.mk文件语法允许我们将Source打包成一个"m

2015-12-04 11:19:09 528

转载 sp<> 强指针类的用法

文一:转:http://wangjun-1985.spaces.live.com/blog/cns!E9070276AAF56C8E!472.entry在android 中可以广泛看到的template class Sp 句柄类实际上是android 为实现垃圾回收机制的智能指针。智能指针是c++ 中的一个概念,因为c++ 本身不具备垃圾回收机制,而且指针也不具备构造函数和析构函数

2015-12-04 11:14:42 1141

转载 C++中new的用法

new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)   new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址   new char[10];//开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址   new int[5][4];//开辟一个存放二维整型数组(大小为5*4)的空间,返回首元

2015-12-04 10:59:32 1191

转载 C++ Template 中的typename、class关键字

在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?        相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为:       template......  在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可

2015-12-04 10:32:55 575

转载 android中invalidate()的自动清屏含义以及屏幕刷新

invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉。 对于屏幕刷新有以下集中情况可以考虑: 1.不使用多线程和双缓冲 这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式

2015-12-03 16:05:07 1048

转载 Android异步消息框架

自从rtsp从stagefright播放器移植到NuPlayer之后,你会发现相关的类中存在许多类似下面的代码:================================11111111111111==========================NuPlayerDriver::NuPlayerDriver() : mLooper(new ALooper) { mLoop

2015-12-03 14:06:58 397

转载 Android 的 init.rc 文件简介

init.rc由许多的Action和Service组成。每一个语句占据一行,并且各个关键字被空格分开.由 # (前面允许有空格)开始的行都是注释行(comment) 一个actions 或 services 的开始隐含声明了一个新的段,所有commands 或 options 属于最近的声明。在第一个段之前的 commands 或 options 都会被忽略 每一个actions 和 serv

2015-12-02 09:57:51 415

转载 Android系统init.rc分析

在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本. (1)android启动文件系统后调用的第一个应用程序是/init,此文件的很重要的内容是解析了init.rc和init.xxx.rc 两个配置文件,然后执行解析出来的任务。

2015-12-02 09:52:04 632

转载 浅析 Linux 初始化 init 系统,第 3 部分: Systemd

近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版采纳了 systemd。本文简要介绍了这三种 init 系统的使用和原理,每个 Linux 系统管理员和系统软件开发者都应该了解它们,以便更好地管理系统和开发应用。本文是系列的第 3 部分,主要讲述 syst

2015-11-30 19:07:57 552 2

转载 浅析 Linux 初始化 init 系统,第 2 部分: UpStart

从 sysvinit 到 systemd 近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经淡出历史舞台,新系统 UpStart 和 systemd 各有特点,而越来越多的 Linux 发行版采纳了 systemd。本文简要介绍了这三种 init 系统的使用和原理,每个 Linux 系统管理员和系统软件开发者都应该了解它们,以便更好地管理系统和开发应用。

2015-11-30 18:48:57 394

转载 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit

从 sysvinit 到 systemd 近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经淡出历史舞台,新的 init 系统 UpStart 和 systemd 各有特点,而越来越多的 Linux 发行版采纳了 systemd。本文简要介绍了这三种 init 系统的使用和原理,每个 Linux 系统管理员和系统软件开发者都应该了解它们,以便更好地管理系

2015-11-30 18:28:30 303

转载 并行启动应用程序从而加速 Linux 的引导

使用 initng 和 upstart 对于 Linux® 的最大抱怨(尤其来自开发人员)就是 Linux 的引导速度。默认情况下,Linux 是一个通用的操作系统,可以作为一个开箱即用的客户机桌面或服务器使用。由于 Linux 具有很好的灵活性,因此可以用作各种用途的基础,但对于任何特定的配置来说,尚不是最理想的选择。本文将向您展示可以提高 Linux 引导速度的一些方法,包括两种可以对初始化过

2015-11-30 18:20:31 465

转载 read 系统调用剖析

Read 系统调用在用户空间中的处理过程 Linux 系统调用(SCI,system call interface)的实现机制实际上是一个多路汇聚以及分解的过程,该汇聚点就是 0x80 中断这个入口点(X86 系统结构)。也就是说,所有系统调用都从用户空间中汇聚到 0x80 中断点,同时保存具体的系统调用号。当 0x80 中断处理程序运行时,将根据系统调用号对不同的系统调用分别处理(调用不同的内核

2015-11-20 17:27:37 7460

转载 ARM Linux系统调用

下面的分析以2.6.34为例。内核部分ARM-Linux的系统调用列表定义在arch/arm/kernel/call.S中: *  This file is included thrice in entry-common.S //entry-common.S将会包含这个文件。根据偏移量,获取函数的指针*//* 0 */

2015-11-20 12:50:45 1728

原创 用宏怎么构造标识符

用宏怎么构造标识符 怎么用宏来构造标识符,需要引用符号粘贴操作符——##,“##”的作用是将右边“操作数”追加到左边“操作数”,将最后的符号标识作为变量的标识符,不过最后的标识符要符合标识符的规定。例如:         #define PASTE(a, b) a##b         应用:         char *PASTE(te, st) = “Hello, wo

2015-11-11 11:04:54 922

原创 如何定义函数式宏

众所周知,宏扩展是纯粹的文本扩展,若定义不明确,就会导致结果错误,或者编译错误,尤其是定义函数式宏时,下面有三条规则可以使我们避免出错。         规则1:宏体必须使用括号包起来,以便保护表达式中低优先级的操作符。                   例:                            #define square(x)x*x             

2015-11-10 16:47:18 1575

转载 怎样写参数个数可变的宏

用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如:void printf(const char* format, …);直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏。可变参数

2015-11-10 15:35:19 437

转载 C语言strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。C语言函数包含文件:string.h函数名: strstr函数原型:1extern char *strstr(char *str1, const c

2015-11-09 17:07:50 12554

转载 C语言strchr函数

strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。C语言char *strchr(const char* _Str,int _Val)char *strchr(char* _Str,int _Ch)头文件:#include 功能:查找字符串s中首次出现字符c的

2015-11-09 17:06:04 6120

转载 realloc函数

realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);函数说明语法指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。新的大小可大可小(但是要注意,如果新的大小小于原内存大小,可能会导致数据丢失,慎用!)头文件#in

2015-11-09 16:51:38 734

原创 数组与指针详解

一、数组与指针的基本关系C语言的初学者,对数组和指针的关系含混不清,其实一句话就可以道出两者的关系——“在C语言中, 只有指针算术和数组下标运算是等价的,指针和数组是不同的”。         很多人认为char a[]与char *a是等价的,也许他们看到的是在函数的形参中char a[]与char *a可以相互替换,而误以为两者等价,实则完全不然。         例如:若char

2015-11-06 17:46:57 403

原创 C语言类型转换详解

前言:C语言的类型转换是很多初学者的难点,但也是语言的重点。在此,介绍一下C语言类型转换的知识。注意本文是以gcc编译器为基准。一、            变量1、 基本类型变量说到基本类型,各种类型就会浮现在脑海中:char(%c、%d、%u)、short(%hd)、int(%d)、long(%ld)、long long(%lld)及其对应无符号类型unsigned char(%

2015-11-02 17:07:54 28697 3

转载 ASCII码

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A97a2STX34"

2015-10-28 10:02:19 632

原创 函数调用时,需注意实参和形参的类型差异,类型内存存储格式的差异

问:能否像下边这样用void **指针作为参数,使函数模拟按引用传递参数吗?         void f(void **);         double *dp;         f((void **)&dp);答:不可移植,这种代码可能有效,而且有时鼓励这样用,但前提是所有指针的内部表示都是一样的,也即内存中数据存储格式一样。         C语言中没有通用指针类型,v

2015-10-27 14:01:16 1364

空空如也

空空如也

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

TA关注的人

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