自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021-04-13

spin lock 和 mutexspin lock用于进程间的同步用于进程间和中断之间的同步mutexspin lock用于进程间的同步spin lock 因为不会引起进程休眠,因此可以避免进程切换带来的开销,比较适用于临界区比较短的情况。用于进程间和中断之间的同步spin lock 因为不会引起进程休眠,所以可以用来同步进程和终端。但是需要使用带有spin_lock_irqsave()/spin_lock_irq().spin_lock()比spin_lock_irq()速度快,但是它并不是

2021-04-13 09:58:47 169 1

原创 how to reset to clean android workspace

repo forall -c "git clean -x -d -f ; git reset --hard"

2020-08-14 10:01:28 154

原创 动态库的命名规则

为方便管理依赖关系,创建或部署动态库时,必须遵循统一约定的规则才行,其中包括动态库的命名规则。动态库共有三个不同的名字。1) 每个动态库有一个包含了真正的库代码的文件名,通常被称为库的realname,命名格式通常为主版本号:不同的版本号之间不兼容次版本号:增量升级 向后兼容发行版本号:对应次版本的错误修正和性能提升,不影响兼容性其中so后缀中的x为主版本号,y为副版本号,z...

2019-10-05 13:22:20 1585 1

原创 linux 内核如何定义自己的打印函数

自己在做watchdog 驱动时使用的简单例子,分享给大家:定义:#define WDT_INFO(fmt, ...) \ pr_info("mero_wdt: %s: " fmt, __func__, ##__VA_ARGS__)#define WDT_ERROR(fmt, ...) \ pr_err("mero_wdt: %s: " fmt, __func__, ##__VA_...

2019-06-26 10:35:14 705

转载 AXI总线简介

目录:0.绪论1.简介1.1 关于AXI协议1.2 AXI架构2.信号描述3.信号接口要求3.1时钟复位3.2基本读写传输3.3传输结构0.绪论AXI是高级扩展接口,在AMBA3.0中提出,AMBA4.0将其修改升级为AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-streamAXI4.0-lite...

2019-04-24 16:42:56 320

原创 Linux 虚拟地址到物理地址转换

Table of Contents概念地址转换过程概念虚拟地址和物理地址的概念CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内...

2019-03-08 13:58:14 11218

原创 Linux 物理内存直接读写工具devmem

目录概述用法dev/mem介绍devmem的源码分析概述在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。基本原理通过设备文件/dev/mem 实现对物理内存的读写。用法Usage: devmem ADDRESS [WIDTH [VALUE...

2019-03-03 16:48:47 14389 2

原创 Linux 内核通知链(notifier chain)原理和使用方法

目录通知链的引入通知链类型一个简单的测试实例通知链的引入Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notification chain)。通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件的通知。组成内核的核心系统代码...

2019-01-23 14:06:48 4496

转载 Linux kernel container_of 宏

 目录基本理解container_of 宏深入探究container_of 宏container_of 宏 版本一container_of 宏 版本二container_of 宏 版本三基本理解container_of 宏container_of,顾名思义就是某某某的容器,也就是说某某某成员变量所在的结构体是谁。struct cntner { int i; ...

2019-01-21 10:51:00 641 2

原创 Linux 根文件系统挂载过程

Table of Contents 一、代码流程二、相关数据结构0.基本概念1.进程控制块PCB2.文件系统类型3.文件系统挂载vfsmount4.超级块(struct super_bloc)5.目录索引节点(struct inode):5.目录项对象(struct dentry):6.file 结构体7. 打开的文件集8.文件查找相关的数据结构...

2019-01-04 16:45:46 3926

转载 通过 adb 不重启内核之重启安卓的方法

转载:https://blog.csdn.net/q1183345443/article/details/61197216使用stop start命令来重启framework,我们来看下其代码是在system/core/toolbox下面,原理很简单就是利用ctl属性来控制进程。start.c #include <string.h>  #include <...

2018-12-26 14:30:41 1028 1

原创 wm 命令

1.获取虚拟window mananger 大小输入命令wm size     返回结果                                                                                                                                                      ...

2018-12-25 15:05:13 474

转载 Ubuntu下sourceInsight安装

转载:https://blog.csdn.net/sinat_19447667/article/details/785532581.背景        source insight是一款源码查看工具,博主准备用这个查看android源码。2.安装     1. sudo apt-get install wine (安装wine,用wine来安装source insight)  ...

2018-12-25 14:15:37 877

原创 vim 注释多行代码和取消注释

目录注释多行代码取消注释注释多行代码第一步:Ctrl + v  进入VISUAL Block 模式第二步:上下移动光标选中需要注释的多行代码的行首部分第三步:输入大写字母 I  ,进入输入模式,   然后输入注释符号  //  或者 # 等等第四步:输入ESC, 完成注释 取消注释第一步:Ctrl + v  进入VISUAL Block 模式...

2018-12-17 15:52:50 1662

原创 mmap共享内存

目录一、mmap基础概念二 、mmap内存映射原理三、mmap和常规文件操作的区别四、 mmap优点总结五、mmap相关函数六、程序举例七、mmap使用细节一、mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方...

2018-12-14 19:56:19 2130

原创 JACK报错(Ensure Jack server is installed and started)&多用户编译

目录 报错内容报错原因解决方法备注报错内容[ 20% 4823/23656] Ensure Jack server is installed and startedFAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher...

2018-12-10 15:54:48 5355

原创 C++ 基类的析构函数为什么需要定义为虚函数

主要是因为当通过父类的指针或引用指向子类的对象时,删除子类时父类的析构函数不能被调用造成内存泄露。1.当基类的引用指向基类的对象#include<iostream>#include<cstring>#include<cstdlib>using namespace std ;class Base{public: Base() ...

2018-12-08 14:10:48 621

转载 进程与线程的区别

关于进程与线程的描述最经典莫过于「进程是资源分配的基本单位,线程是 CPU 调度的基本单位」。在早期面向进程设计的计算机系统中,进程不仅拥有并管理着诸如 CPU、RAM、文件描述符与信号处理之类的计算机软硬件平台资源,同时也作为程序的基本执行实体。而在现代面向线程设计的计算机系统中,线程取代了进程作为程序的基本执行实体,进程的定位则更趋于逻辑层面,作为资源和线程的容器,一个进程可以拥有多个且至...

2018-12-06 16:59:05 97

转载 C++ 信号处理

信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。signal() 函数C++ 信号处理库提供了 signal 函数,用...

2018-12-06 16:27:02 142

转载 C++ 文件和流

到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型:要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream&gt...

2018-12-06 16:22:23 187

转载 C++ 多线程

多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。创建线程下面的程序,我们可以用它来创建一个 ...

2018-12-06 15:13:00 101

转载 C++ 多态与虚函数

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类 Shape 被派生为两个类,如下所示:#include <iostream> using namespace std; class Shape { protected: ...

2018-12-06 11:18:47 145

转载 C++ 重载运算符和重载函数

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中的函...

2018-12-04 20:19:53 95

转载 C++ 继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物...

2018-12-04 19:33:59 103

转载 C++ 类中的static关键字

1.静态数据成员我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进...

2018-12-04 17:32:39 304

转载 C++ 友元函数

类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所示:...

2018-12-04 15:09:12 491

转载 C++ 拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参数传递给函数。 复制对象,并从函数返回这个对象。如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:...

2018-12-04 14:54:35 127

原创 c++ 中的继承与访问修饰符

总结:1.私有成员子类不可见           2.非私有成员最高访问权限限制为小于继承方式

2018-12-04 14:09:25 803

原创 UTF-8编码详解

1.ASCII编码因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所 以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示 的最大整数是65535,4个字节可以表示的最大整数是4294967295。最早只有...

2018-12-03 15:29:27 21651 8

转载 Android.mk文件详解解

 原文链接:http://blog.sina.com.cn/s/blog_602f8770010148ce.html0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假...

2018-10-12 09:54:13 948

原创 linux输入子系统(一) —— 架构分析

初识linux输入子系统   linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入子系统核心层(InputCore)和输入子系统设备驱动层。设备驱动层:主要实现对硬件设备的读写访问,中断设置,并把硬件产生的事件转换为核心层定义的规范提交给事件处理层。 核心层:为设备驱动层提供了规范和接口。...

2018-09-18 11:07:40 1419

原创 快速编译kernel

1.配置编译环境source build/envsetup.shlunch xx2.开始编译make showcommands bootimage >build.log通过参数showcommands 将编译的命令显示出来,比如原来编译命令是make -j4 但是编译的细节没看到,如果要显示编译的命令可以用参数showcommands3.创建编译脚本a.to...

2018-09-18 09:44:54 3495 2

原创 linux 进程调度 pick_next_task()函数

pick_next_task是进程调度的关键步骤,主要功能是从发生调度的CPU的运行队列中选择一个进程运行。本文主要介绍该函数的实现过程。系统中的调度顺序是:实时进程------->普通进程------>空闲进程。分别从属于三个调度类:rt_sched_class,fair_sched_class和 idle_sched_class(每个cpu都有且只有一个Idle 进程且不会阻塞)。...

2018-09-15 15:52:06 2602

原创 c 语言位域的使用

源文件:#include <stdio.h>#include <stdarg.h>int main(){        struct bs{                int a:5;                int b:5;                int c:5;                int d:5;          ...

2018-08-24 17:42:32 150

空空如也

空空如也

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

TA关注的人

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