- 博客(11)
- 收藏
- 关注
原创 Makefile中$@,$^,$<
$@——目标文件;$^——所有依赖文件;$<——第一个依赖文件。例如:下面是一个Makefile:main:main.o mytool1.o mytool2.o gcc -o main main.o mytool1.o mytool2.o main.o:main.c mytool1.h mytool2.h gcc -c main.c mytool1.o:mytool1.c m...
2018-05-17 17:07:41 2636
原创 makefile
1、语法:$(if condition, then,else then)例子:LOCAL_DIR :=SUBDIR := $(if $(LOCAL_DIR) , $(LOCAL_DIR), /home/temp)$(info $(LOCAL_DIR))$(info $(SUBDIR))解释:如果LOCAL_DIR不为空,则将LOCAL_DIR赋值给SUBDIR,如果为空则将/home/temp...
2018-05-16 18:14:28 196
原创 linux kernel 3.18.0 Makefile注释
VERSION = 3 #kernel 主版本号PATCHLEVEL = 18 #kernel 次版本号SUBLEVEL = 0 #kernel 修改版本号EXTRAVERSION = #自定义NAME = Diseased Newt #代号# *DOCUMENTA...
2018-05-14 16:05:02 1530
原创 Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(OPT),add) ...
2018-05-14 16:02:57 136
原创 #, ##,...,__VA_ARGS__,##__VA_ARGS__
1、ANSI C允许在c字符串中包含宏参数,如下例子:#include <stdio.h>#include <stdlib.h>#define POSI(x) printf("the square of "#x "is : %d\n", (x) * (x))int main(){ int y = 4; POSI(4); P...
2018-05-14 10:20:32 265
原创 汇编
.fill 语法:.fill repeat, size, value 含义是反复拷贝 size个字节,重复 repeat 次, 其中 size 和 value 是可选的,默认值分别为 1 和 0.
2018-05-08 18:04:03 105
原创 Linux cpumask分析
首先我们来分析一下定义在cpumask.h中 结构体cpumask_t[cpp] view plain copy typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;#define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)]...
2018-05-08 17:29:32 1291
原创 linux内核中的likely()和unlikely()宏的作用
在看linux内核代码的时候,经常会看到likely(x)和unlikely(x)宏的使用。那这两个宏有什么作用呢?这两个宏在内核中的定义如下:# define likely(x) __builtin_expect(!!(x), 1)# define unlikely(x) __builtin_expect(!!(x), 0)可见这里使用了gcc的内建函数__builtin_expect()。_...
2018-05-08 12:44:18 145
原创 内核抢占与中断返回
1、上下文一般来说,CPU在任何时刻都处于以下三种情况之一:(1)运行于用户空间,执行用户进程;(2)运行于内核空间,处于进程上下文;(3)运行于内核空间,处于中断上下文。应用程序通过系统调用陷入内核,此时处于进程上下文。现代几乎所有的CPU体系结构都支持中断。当外部设备产生中断,向CPU发送一个异步信号,CPU调用相应的中断处理程序来处理该中断,此时CPU处于中断上下文。在进程上下文中,可以通过...
2018-05-08 12:15:46 402
转载 从cgroup_init_early函数学习cgroup——初始化代码
前面分析了cgroup机制的框架及数据结构之间的关系,现在看代码就比较见简单了。 代码部分 在init/main.c的start_kernel函数中会调用cgroup_init_early函数进行cgroup的初始化。其实对cgroup的初始化分两次,分别是cgroup_init_early和cgroup_init。这么做的原因是,系统初始阶段需要使用一些 subsystem,先对这一部分进行初始...
2018-05-08 11:17:04 1469
转载 从cgroup_init_early函数学习cgroup——框架
一些概念的理解cgroup cgourp是一种机制 作用:集成各个进程,对进程分组实现进程组,分配或限制进程组使用的资源(这部分主要有个各个subsystem完成)。 另一个角度,在研究代码的时候,我们更愿意将cgroup理解为一种控制资源的行为。比如:我想要控制进程的CPU使用率为20%,那么我可以创建一个cgroup,这cgroup的作用就是控制指定进程的cpu...
2018-05-08 10:19:57 588
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人