Burning Water

没有什么能够阻挡,你对自由的向往

kernel 系统调用----system call

Init在trap_init中对SYSCALL_VECTOR(编号0x80)的向量进行初始化。 808 set_system_trap_gate(SYSCALL_VECTOR, &system_call);将system call初始化为trap门,加入到IDT table中,发生...

2017-02-28 15:56:05

阅读数:561

评论数:0

Linux cmdline 解析(CMA 预留内存)

Linux Version:3.14 Android : Lcmdline在kernel启动的时候被解析. cmdline启动的log中可以看到,比如我的是command_line = androidboot.bootloader=1537.100_M1S1 androidboot.seri...

2015-09-25 10:55:23

阅读数:2166

评论数:0

start_kernel——setup_per_cpu_areas

setup_per_cpu_areas是为了对内核的内存管理(mm)进行初始化而调用的函数之一。只在SMP系统中调用,UP中不执行任何操作。 setup_per_cpu_areas函数为SMP的每个处理器生成per-cpu数据。 per-cpu数据按照不同的CPU类别使用,以将性能低下引发的缓...

2015-07-07 12:29:27

阅读数:1063

评论数:0

start_kernel——setup_nr_cpu_ids

kernel/smp.c/* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */ void __init setup_nr_cpu_ids(void) { nr_cpu_ids = find...

2015-07-06 18:58:18

阅读数:1253

评论数:2

start_kernel——mm_init_owner

所有任务都具有自己的内存,启动阶段中的当前任务必须具备属于自己的内存。 mm_init_owner()函数传递init_mm和init_task参数 mm/init-mm.cstruct mm_struct init_mm = { .mm_rb = RB_ROOT, ...

2015-07-06 17:49:46

阅读数:916

评论数:0

start_kernel——page_address_init

mm/highmem.cvoid __init page_address_init(void) { int i; for (i = 0; i < ARRAY_SIZE(page_address_htable); i++) { INIT_LIST_HEAD(&am...

2015-07-06 16:12:58

阅读数:558

评论数:0

start_kernel——boot_cpu_init及PER_CPU

init/main.c/* * Activate the first processor. */static void __init boot_cpu_init(void) { int cpu = smp_processor_id(); /* Mark the boot cp...

2015-07-06 14:31:34

阅读数:1333

评论数:0

start_kernel——local_irq_disable

在启动初期需要关闭CPU的IRQ,原因: 由于尚未对中断代码,向量表,中断处理器进行初始化,所以必须关闭中断。我的源代码里面定义了 CONFIG_TRACE_IRQFLAGS_SUPPORT,所以调用的是 include/linux/irqflags.h#define local_irq_di...

2015-07-03 15:03:52

阅读数:606

评论数:0

从cgroup_init_early函数学习cgroup——初始化代码

前面分析了cgroup机制的框架及数据结构之间的关系,现在看代码就比较见简单了。 代码部分 在init/main.c的start_kernel函数中会调用cgroup_init_early函数进行cgroup的初始化。其实对cgroup的初始化分两次,分别是cgroup_init_early和...

2015-07-03 13:51:38

阅读数:1245

评论数:0

从cgroup_init_early函数学习cgroup——框架

一些概念的理解cgroup cgourp是一种机制 作用:集成各个进程,对进程分组实现进程组,分配或限制进程组使用的资源(这部分主要有个各个subsystem完成)。 另一个角度,在研究代码的时候,我们更愿意将cgroup理解为一种控制资源的行为。比如:我想要控制进程的CPU使用率为20%,...

2015-07-02 19:27:41

阅读数:1311

评论数:0

start_kernel----smp_setup_processor_id(以及weak属性)

在init/main.c中有定义void __init __weak smp_setup_processor_id(void) { }这是一个__weak属性的空函数。 先了解一下__weak属性:和gcc编译器相关: weak属性可以让编译器在编译的时候忽略函数未定义的错误弱符号: 若两个...

2015-07-02 16:24:09

阅读数:956

评论数:0

start_kernel——boot_init_stack_canary

/* * Initialize the stackprotector canary value. * * NOTE: this must only be called from functions that never return, * and it must always be inl...

2015-07-01 20:15:28

阅读数:1064

评论数:0

start_kernel----lcokdep_init

void lockdep_init(void) { int i; /* * Some architectures have their own start_kernel() * code which calls lockdep_init(), while we a...

2015-07-01 18:53:53

阅读数:974

评论数:0

__init属性的函数

内核中有众多__init属性的函数,这些函数被用作初始化。 比如:/******************************************************* Function: Driver Install function. Input: None. Ou...

2015-06-16 18:40:38

阅读数:630

评论数:0

CPU动态调频三:interactive governor如何选频

choose_freq函数用来选频,使选频后的系统workload小于或等于target load. 核心思想是:选择最小的频率来满足target load. 影响选频结果的因素有两个: 1.两次统计时间内系统频率的平均频率loadadjfreq, 2.系统设定好的target load,...

2015-05-15 11:06:17

阅读数:3846

评论数:0

CPU动态调频二:interactive governor

Linux提供了多种governor供用户选择,这里以interactive为例,毕竟现在的android手机中都是采用该governor. 基于linux 3.14 以下代码若未指明位置则默认在drivers/cpufreq/cpufreq_interactive.c中.首先需要定义一个cp...

2015-05-13 19:33:46

阅读数:5988

评论数:1

CPU动态调频(linux 3.14.0)一

cpufreq 动态调频 android

2015-04-21 10:42:10

阅读数:1439

评论数:0

将安卓驱动编译成moudle开机后自动启动

module 安卓 insmod

2015-04-20 15:48:21

阅读数:565

评论数:0

内核读写文件

filp_open fp->f_op->read fp->f_op->write

2015-04-20 14:40:50

阅读数:611

评论数:0

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