- 博客(32)
- 收藏
- 关注
转载 1. QCamera2基础组件——cam_semaphore
/* Copyright (c) 2012, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the fo...
2017-06-08 09:12:00 163
转载 [Binder深入学习二]Binder驱动——基础数据结构二
Userspace和KernelSpace进行交互时,大部分命令是通过 ioctl 实现的,在这个过程中,最重要的一个便是 BINDER_WRITE_READ 命令了。#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)/* * On 64-bit platfor...
2017-04-23 20:25:00 190
转载 [Binder深入学习一]Binder驱动——基础数据结构
具体代码路径: kernel/drivers/staging/android/binder.c kernel/drivers/staging/android/binder.h/* * binder_work是用来描述待处理的工作项,这些工作项可能属于同一个进程,也可能属于一个进程中的某一个线程*/struct binder_work { ...
2017-04-23 01:40:00 197
转载 初等函数——三角函数
定义:直角三角形与三角函数的定义 在直角三角形中,当平面上的三点A、B、C的连线,AB、AC、BC,构成一个直角三角形,其中∠ACB为直角。对∠BAC而言,对边(opposite)a=BC、斜边(hypotenuse)c=AB、邻边(adjacent)b=AC,则存在以下关系:单位圆的定义 六个三角函数也可以依据半径为1,中心为原点的单位圆来定义。...
2017-03-21 11:23:00 490
转载 初等函数——指数函数(Exponential Function)
一般地,函数叫做指数函数,其中x是自变量,函数的定义域是R。转载于:https://www.cnblogs.com/ronnydm/p/6536670.html
2017-03-11 23:34:00 1330
转载 初等函数——幂函数(Power Function)
幂函数(Power function)是形如f(x)=xa的函数,a∈R是实数。即以底数为自变量,幂为因变量,指数为常数的函数称为幂函数。性质 幂函数的图像一定会出现在第一象限内,一定不会出现在第四象限,至于是否出现在第二、三象限内,要看函数的奇偶性;幂函数的图像最多只能同时出现在两个象限内。1. 取正值 当α>0时,幂函数y=xα有下列性质: a、图...
2017-03-11 23:17:00 1911
转载 自然常数e的含义
e是一个重要的常数,但是它的直观含义却不像π 那么明了。我们都知道,圆的周长与直径之比是一个常数,这个常数被称为圆周率,记作 π = 3.14159......可是e代表什么呢? e是“指数”(exponential)的首字母,也是欧拉名字的首字母。和圆周率 π 及虚单位 i 一样,e是最重要的数学常数之一。第一次把e看成常数的是雅各布·伯努利,他开始尝试计算lim...
2017-03-08 22:54:00 963
转载 内存管理初始化源码5:free_area_init_nodes
start_kernel ——> setup_arch——> arch_mem_init——> |——> bootmem_init |——> device_tree_init |——> sparse_init...
2016-10-19 17:33:00 187
转载 内存管理初始化源码4:add_active_range
我们在阅读源码时,函数功能可以分为两类:1. bootmem.c 2. page_alloc.c。 1. bootmem.c是关于bootmem allocator的,上篇文章已经简述过。 2. page_alloc.c是关于Memory Management subsystem的。 关于内存管理子系统的初始化调用了多个函数,我们首先分析在bootmem_init中...
2016-10-19 12:39:00 146
转载 内存管理初始化源码3:bootmem
start_kernel ——> setup_arch ——> arch_mem_init ——> bootmem_init ——> init_bootmem_node: 此时,不得不说的就是 bootmem 。1. 什么是bootmem: 我们都知道,所有的物理内存是交给内核管理的,或者说是交给内存管理子系统管理的。那么,从内核启动到内核管理...
2016-10-03 20:27:00 124
转载 树五:线索化二叉树
线索化二叉树: 线索化二叉树指的是将二叉树中的结点进行逻辑意义上的“重排列”,使其可以线性的方式访问每一个结点。 二叉树线索化后每个结点都有一个线性下标,通过这个下标可以快速访问结点,而不需要遍历二叉树。转载于:https://www.cnblogs.com/ronnydm/p/5929294.html...
2016-10-03 16:41:00 78
转载 树四:遍历二叉树
二叉树遍历: 从根结点开始,按照某种次序依次访问二叉树中的所有结点。前序遍历: 中序遍历:后序遍历:层次遍历: 代码实现:/* main.c */#include <stdio.h>#include <stdlib.h>#include "BTree.h"#include "LinkQueue....
2016-10-03 16:35:00 73
转载 树三:创建二叉树
指路法定位结点: 通过根结点与目标结点的相对位置进行定位指路法可以避开二叉树递归的性质“线性”定位在C语言中可以用 bit 位来进行指路: #define BT_LEFT 0 #define BT_RIGHT 1 typedef unsigned long long BTPos;二叉树的存储结构:/* 结点指针域定义 *...
2016-10-03 16:18:00 89
转载 树二:二叉树定义及性质
树结构模型: 1. 双亲孩子表示法模型每个结点都有一个指向其双亲的指针每个结点都有若干个指向其孩子的指针 2. 孩子兄弟表示法模型每个结点都有一个指向其第一个孩子的指针每个结点都有一个指向其第一个右兄弟的指针 本质是将普通树转化为二叉树二叉树的定义: 二叉树是由 n (n >= 0) 个结点组成的有...
2016-10-03 11:20:00 88
转载 树一:定义及存储
树的定义:树是一种非线性的数据结构。树是由 n (n >= 0) 个结点组成的有序集合。如果 n 为0,称为空树;如果 n > 0, 则:有一个结点称为根结点(root),它有直接后继,但没有直接前驱;除根以外的其他结点划分为 m (m > 0)个互不相交的有限集合 T0, T1, ..., Tm-1,每个集合又是一棵树,并且称为根的...
2016-10-03 11:19:00 117
转载 排序七:归并排序
基本思想: 将两个或两个以上的有序序列合并为一个新的有序序列: 有序序列 V[1] ... V[m] 和 V[m+1] ... V[n] ——> V[1] ... V[n] 这种方法称为2路归并。 将3个有序序列归并为一个新的有序序列,称为3路归并。 将有多个有序序列归并为一个新的有序序列,称为多路归并。#...
2016-09-25 20:53:00 88
转载 排序六:快速排序
基本思想: (1)任取待排序序列中的某个数据元素(例如:第一个数据元素)作为基准,按照该元素的关键字大小将整个序列划分为左右两个子序列:左侧子序列中所有元素都小于或等于基准元素右侧子序列中的所有元素都大于基准元素基准元素排在这两个子序列的中间 (2)分别对这个子序列重复实施上述方法,直到所有的对象都排在相应的位置上为止。 #include &l...
2016-09-25 20:52:00 127
转载 排序五:希尔排序
希尔排序(Shell Sort)也是插入排序的一种。也称为缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。基本思想: 将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排。 再从百度上贴个示例:...
2016-09-25 20:45:00 126
转载 排序四:冒泡排序
基本思想: 设待排序数据元素序列中的元素个数为n,最多做n-1趟,i = 1, 2, ..., n-1。在第 i 趟中从后向前,j = n-1, n-2, ..., i,两两比较 V[j-1] 和 V[j] 的关键字。如果发生逆序,则交换 V[j-1]和 V[j]。#include <stdio.h>void println(int array[], i...
2016-09-24 22:52:00 74
转载 深入分析Linux内核链表
1. 普通单链表2. 内核链表上图是本人从其他博客盗来的,差点被糊弄过去。下图是本人自己用KeyNote画的(唉!!画图真的是让人心好累啊!!)。差异是不是很明显啊?!Read The Fucking Source Code1. 初始化/* include/linux/types.h */struct list_head { st...
2016-09-24 22:12:00 82
转载 内存管理初始化源码2:setup_arch
PFN相关宏说明:/* kernel/include/linux/pfn.h */PFN : Page Frame Number(物理页帧)/* * PFN_ALIGN:返回地址x所在那一页帧的下一页帧的起始地址。 * 例如:PFN_ALIGN(0x00000800) = 0x00001000 ; PFN_ALIGN(0x00001800) = 0x00002000; *...
2016-09-22 18:58:00 126
转载 内存管理初始化源码1:setup_arch
源码声明:基于Linux kernel 3.081. 在kernel/arch/mips/kernel/head.S中会做一些特定硬件相关的初始化,然后会调用内核启动函数:start_kernel;2. start_kernel是通用的内核启动函数,但是在初始化内核过程中,必然有一些参数是特定于硬件体系结构的,这些特定于硬件体系结构的设置通过调用函数setup_arch函数;...
2016-09-20 15:58:00 135
转载 gcc之__attribute__简介及对齐参数介绍
GNU C的一大特色就是__attribute__机制。__attribute__机制可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 __attribute__语法格式为:__attribute__((attribute-list))。__attribute__对结...
2016-09-14 21:12:00 259
转载 git远程仓库创建及代码提交
git仓库创建:1. mkdir project-repertory2. cd project-repertory3. git init --bare此时,git仓库已成功创建。本地要提交的代码在./project目录下:1. cd ./project2. git init ; 创建本地git库3. git add .4. git commit -m "init...
2016-09-07 12:22:00 77
转载 排序三:插入排序
基本思想: 当插入第 i (i >= 1)个数据元素时,前面的 V[0], V[1], ..., V[i-1] 已经排好序。这时,用 V[i] 的关键字与 V[i-1], V[i-2], ... 的关键字进行比较,找到插入位置即将 V[i] 插入,原来位置上的对象向后顺移。直接看代码,仔细想想,其实不难!#include <stdio.h>...
2016-08-28 10:16:00 85
转载 排序二:选择排序
基本思想: 每一趟(例如第i趟,i=0,1,2,...,n-2)在后面 n-i 个待排序的数据元素中选出关键字最小的元素,作为有序元素序列的第 i 个元素。#include <stdio.h>void println(int array[], int len){ int i = 0; for (i = 0; i <...
2016-08-28 09:12:00 59
转载 排序一:排序的概念及分类
一般定义:将一组“无序”的数据元素调整为“有序”的数据元素。数学定义:假设含n个数据元素的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn},这些关键字相互之间可以进行比较,即在它们之间存在这样的关系: 按此固有关系将上式记录序列重新排序为: 的操作称为排序。排序的稳定性: 稳定排序示例:...
2016-08-23 22:49:00 165
转载 【深入理解Linux内核架构】3.3 页表
页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存、页帧)之间的关联。 向每个进程提供一致的虚拟地址空间。 将虚拟内存页映射到物理内存,因而支持共享内存的实现。 可以在不增加物理内存的情况下,将页换出到块设备来增加有效的可用内存空间。内核内存管理总是假定使用四级页表。3.3.1 数据结构 内核源代码假定v...
2016-08-10 15:44:00 237
转载 Linux宏:__ASSEMBLY__
汇编:assembly猜测:所以这个宏跟汇编有关?!引用:某些常量宏会同时被C和asm引用,而C与asm在对立即数符号的处理上是不同的。asm中通过指令来区分其操作数是有符号还是无符号的,而不是通过操作数。而C中是通过变量的属性,而不是通过操作符。C中如果要指明常量有无符号,必须为常量添加后缀,而asm则通过使用不同的指令来指明。如此,当一个常量被C和asm同时包含时,必须做不同...
2016-08-10 12:17:00 174
转载 【深入理解Linux内核架构】3.2 (N)UMA模型中的内存组织
内核对一致和非一致内存访问系统使用相同的数据结构。在UMA系统上,只使用一个NUMA结点来管理整个系统内存。而内存管理的其他部分则相信他们是在处理一个伪NUMA系统。3.2.1 概述 内存划分为结点。每个结点关联系统中的一个处理器,在内核中,使用pg_data_t的实例。 各个结点又划分为内存域,是内存的进一步细分。分为:normal、DMA、highmem 最多3个...
2016-08-09 13:34:00 325
转载 【深入理解Linux内核架构】第3章:内存管理
3.1 概述 内存管理涵盖了许多领域:内存中物理内存页的管理;分配大块内存的伙伴系统;分配小块内存的slab、slub、slob分配器;分配非连续内存块的vmalloc机制;进程的地址空间。 Linux内核一般将虚拟地址空间划分为两部分:底部较大的部分用于用户进程,顶部则用于内核。虽然(在两个用户进程之间)上下文切换期间会改变下半部分,但是虚拟地址...
2016-08-06 18:19:00 135
转载 【深入理解Linux内核架构】6.6 资源分配
一段摘自《Linux设备驱动程序》的话: 每种外设都通过读写寄存器进行控制。大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的。 在硬件层,内存区域和I/O区域没有概念上的区别:它们都通过向地址总线和控制总线发送电平信号进行访问,在通过数据总线读写数据。一些CPU制造厂商在它们的芯片中使用单一的地址空间,而另一些则为外设...
2016-08-04 15:15:00 194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人