- 博客(39)
- 收藏
- 关注
原创 产生、添加和卸载patch
1、产生patch:(1)纯净的代码A_old,执行make distclean(2)将A_old拷贝一份到B_new(3)将修改的文件放入B_new中(4)执行diff -uprN A_old B_new > mypatch,这样是对多个文件打patch 对单个文件打patch: diff -up orig_file new_fi...
2019-04-25 08:49:45 966
原创 优秀博客和网站收集
1、https://www.cnblogs.com/bakari/2、notepad++文件查看工具3、X86指令解释: https://www.felixcloutier.com/x86/4、Linux命令大全 http://man.linuxde.net/ http://linux.51yip.com/5、https://leetcode-cn...
2018-12-26 14:43:24 168
原创 Linux-Poweroff【S5】
S5是poweroffhibernate (kernel/power/hibernate.c) |- hibernation_snapshot | |- create_images | |- disable_nonboot_cpus (kernel/cpu.c) | | |- _cpu_down ...
2018-11-21 15:51:16 390
原创 Linux-Suspend-to-Disk【Hibernate,S4】
S4:suspend to disk (1)进入S4state_store hibernate hibernation_snapshot create_image swsusp_arch_suspend(2)从S4返回late_initcall_sync(software_resume);software_re...
2018-11-21 15:50:38 1083
原创 调试常用命令
1、patch -p1 -R < patch 去patch2、patch -p1 < patch 打patch-----------------------------------------------------------------------1、查看kernel log,实时的cat /proc/kmsg2、查看当前系统中用的iopo...
2018-11-13 09:39:06 205
转载 addr2line
出处:https://www.cnblogs.com/yangguang-it/p/6435297.html addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号。在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rte...
2018-11-02 09:48:42 982
转载 Linux 程序编译过程的来龙去脉
原文出处:”https://blog.csdn.net/p23onzq/article/details/81977367一、前言 大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类,一种是编译型语言,例如C,C++,Java,另一...
2018-11-02 09:43:13 130
转载 linux版本号的含义
在linux下有一个目录,即/usr/src/kernels/目录,下面记载着一个linux系统的内核文件,例如:2.6.18-164.el5-x86_64、2.6.18-8.el5-x86_64和2.6.18-194.el5-x86_64等,这些文件编号意味着什么呢?例如2.6.18代表着什么?el5代表着什么?x86_64又代表着什么?linux内核版本的分类Linux内核版本有两...
2018-10-26 13:52:45 2068
转载 如何添加Makefile和Kconfig
转自:https://blog.csdn.net/prike/article/details/79334609我们以简单的单选项为案例来演示 假如,我们做好了一个驱动,需要将选项加入到内核的编译选项中,可以按以下步骤操作:1.第一步 配置Kconfig(1)在driver目录下新建一个目录mkdir driver/test (2)进入test目录,创建Kconfig文件 ...
2018-09-26 10:57:17 683
转载 Kconfig .config Makefile 区别联系
felix的认识:(1)Kconfig为make menuconfig提供配置选项;(2).config是由make menuconfig产生的配置文件;(3)make内核的时候,会根据.config文件,向Kbuild系统下的makefile文件传递配置参数,决定是否加载driver module。转自:https://blog.csdn.net/qq_27840681/arti...
2018-09-26 10:25:33 482
转载 Ubuntu获取命令源码的方法
https://github.com/hokein/Wiki/wiki/ubuntu%E8%8E%B7%E5%8F%96%E6%BA%90%E7%A0%81%E6%96%B9%E6%B3%95以下载ls的源码为例说明:首先要知道ls是属于哪个包的,可以通过下面命令: #dpkg -S 'command name' 通用格式 $ dpkg -S /bin/ls得到如下...
2018-09-20 14:59:19 905
转载 request_mem_region和ioremap函数的理解
如果从根本上说起的话应该从Intel的处理器芯片与其它的芯片的不同说起,与这两个函数相关的是对 I/OPort与内存的寻址方式,intel的处理器中内存与外部IOPort是独立编址与寻址的,这就有了两种地址空间分别是内存地址空间与IO地址空间,访问IO地址空间需使用不同的指令。与intel不同的是有些处理器(如PowerPC等)就只有一个地址空间,即内存空间,在这种情况下,外设的I/OPort物理...
2018-09-11 17:53:27 488
转载 RCU机制和BKL(大内核锁)
转自:https://www.cnblogs.com/wuchanming/p/3816103.html在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL)。文章的最后对《大话Linux内核中锁机制》系列博文进行了总结,并提出关于目前Linux内核中提供的锁机制的一些基本使用观点。...
2018-09-07 14:51:59 558
转载 原子操作和自旋锁
转自:https://www.cnblogs.com/wuchanming/p/3816084.html很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态。这其中包括了我们所熟知的SMP系统,多核间的相互竞争资源,单CPU之间的相互竞争,中断和进程间的相互抢占等诸多问题。通常情况下...
2018-09-07 14:48:38 1509
转载 内存屏障、读写自旋锁和顺序锁
转自: https://www.cnblogs.com/wuchanming/p/3816087.html在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障、读写自旋锁以及顺序锁的相关内容。下面首先讨论内存屏障的相关内容。三、内存屏障不知读者是是否记得在笔者讨论自旋锁的禁止或使能的时候,提到过一个内存屏障函数。OK,接下来,笔者将讨论内存屏...
2018-09-07 14:44:30 628
转载 信号量和读写锁
六、信号量关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程才能执行临界区的代码;不同的是获取不到信号量时,进程不会原地打转而是进入休眠等待状态。它的定义是include\linux\semaphore.h文件中,结构体如图6.1所示。其中的count变量是计数作用,通过使用lock变量实现对count变量的保护,而wait_list则是对申请信号量的进程维护的等待队列。 ...
2018-09-07 14:41:05 1492
转载 Kconfig详解
转自:https://blog.csdn.net/ultraman_hs/article/details/52984929Kconfig的格式下面截取/drivers/net下的Kconfig文件中的部分内容:# Network device configurationmenuconfig NETDEVICES default y if UML de...
2018-09-06 15:34:04 513
原创 原子变量和原子操作
原子变量:对一个变量的修改包括:读取->修改->回写,原子变量保证了这个过程不被其他操作打断;原子操作:指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。...
2018-09-05 10:49:41 964
原创 进程抢占-触发抢占的时机和执行抢占的时机
一、触发抢占的时机:周期性时钟中断:检查时间片是否用完,如果用完触发抢占 scheduler_tick curr->sched_class->task_tick(rq, curr, 0);唤醒进程的时候,如果优先级高于cpu上的当前进程,就会发出抢占:try_to_wake_up(),最终会调用check_preempt_curr(...
2018-08-29 11:29:31 2698
原创 strace
1 功能说明strace 命令是一种强大的工具, 能够显示任何由用户空间程式发出的系统调用. strace 显示这些调用的参数并返回符号形式的值. strace 从内核接收信息, 而且无需以任何特别的方式来构建内核. strace 的每一行输出包括系统调用名称, 然后是参数和返回值.下面记录几个常用option:-f -F选项告诉strace同时跟踪fork和vfork出来的进程-...
2018-08-28 15:43:05 1515
原创 Useful websit for linux
1、Linux-Cross-Referencehttps://elixir.bootlin.com/linux/latest/source2、有很多问题可以在这里找到答案(IT问答网站)https://stackoverflow.com/
2018-08-24 10:47:04 158
原创 ftrace
1、ftrace有什么作用 ftrace是内核提供的一种调试工具,可以对内核发生的事件进行记录,比如函数调用、进程切换、中断开关等,具体使用可以参考Document/trace/ftrace.txt,想要了解ftrace的设计可以参考Document/trace/ftrace.txt。2、打开kernel的ftrace功能(1)ftrace相关的配置选项 CONFIG_F...
2018-08-17 17:47:12 1289
原创 procfs文件系统
1、proc_mkdir说明:在/proc下创建目录函数原型:struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent)参数:name 要创建的目录名称 parent 父目录,如果为NULL,表示直接在/proc下面创建目录。2、proc_mkdir_data...
2018-08-17 14:21:16 938
原创 linux kernel debug方法总结
1、最常用的方法是printk插桩;2、借住proc文件系统查看相关参数:/proc/interrrupts、/proc/timer_list、/proc/cpuinfo等,或者自己创建proc文件,帮助debug; procfs/sysfs/debugfs:http://tinylab.org/show-the-usage-of-procfs-sysfs-debugfs/ ...
2018-08-15 17:15:02 3033
原创 容易忘记的linux技巧(琐碎知识但很重要)
1、BSP- boot strap processor;AP- applicationprocessor AP是除了BSP之外的所有CPU2、中断share,假设IRQ1和IRQ2中断共享 (1)IRQ1和IRQ2 idle为high level,low level trigger;这时候触发中断是与逻辑,任意一个为low level,与的结果就是low...
2018-08-15 14:58:17 287
翻译 Intel汇编指令
汇编指令GAS中每个操作都是有一个字符的后缀,表明操作数的大小。 C声明 GAS后缀 大小(字节) char b 1 short w 2 (unsigned) int / long / char...
2018-08-02 14:49:32 869
原创 Printk相关总结归纳
一、Printk日志级别 (1)查看和设定控制台日志级别 cat /proc/sys/kernel/printk 4 4 1 7 第一个参数:当前控制台日志级别,小于4的日志可以被打印 第二个参数:默认的消息日志级别(即printk打印消息的时候未指定日志级别时候使用的级别) ...
2018-06-29 14:06:42 377
原创 Linux中的0号进程
在SMP系统中,有多少个处理器单元,就会有多少个idle进程; core0上的idle进程由init_task进程退化而来,而AP(除BSP core以外的所有core)的idle进程则是BSP在后面调用fork逐个创建的。...
2018-05-07 09:58:44 772
原创 Linux-Suspend-to-Ram【Sleep,S3】
S3:suspend to ram基于Linux-3.16.0内核(1)进出S3的脉络state_store pm_suspend enter_state suspend_devices_and_enter suspend_enter /*suspend_ops为...
2018-05-07 09:58:06 1568
原创 cpuidle framework
cpuidle framework使用的driver:acpi_idle_driveracpi_processor_driver_init driver_register(&acpi_processor_driver) static struct device_driver acpi_processor_driver = { .name = "processor", ....
2018-05-03 10:11:44 224
原创 cpufreq framework
所有与CPUFreq相关的sysfs接口都位于:/sys/devices/system/cpu下面,各个字段的含义如下: cpufreq framework的功能也被称作动态电压/频率调整(Dynamic Voltage/Frequency Scaling):通过调整CPU core的电压和频率,兼顾系统的性能和功耗,在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频...
2018-04-27 11:33:20 356
原创 linux常用命令积累
需要在不断的积累中丰富自己,在不断的使用中强化自己的技能-felixzhang养成一种习惯,坚持,自律,这样才能在自己的道路上走的更远-felixzhangfrom CSDN-linux command learning:https://blog.csdn.net/qq_41394155/article/details/834725951、vi/vim (1):set nu ...
2018-04-23 10:39:36 298
原创 进程管理与调度优秀网址收录
1、https://blog.csdn.net/gatieme/article/details/514565692、http://blog.chinaunix.net/uid-20671208-id-4909620.html3、http://www.cnblogs.com/tolimit/p/4335681.html4、http://www.cnblogs.com/tolimit/p/430305...
2018-04-20 10:26:12 118
原创 linux主调度器(三)
主调度器调度层次如下: schedule __schedule pick_next_task 在pick_next_task里面会根据stop->dl->rt->fair->idle的顺序,遍历各个调度类,从中选择一个进程放入cpu执行。pick_next_task里面也进行了优化:如果cpu运行队列rq中所有进程都是...
2018-04-13 11:04:33 170
原创 Linux CFS调度算法之虚拟时钟vruntime
参考网址:https://blog.csdn.net/gatieme/article/details/52067748 1.cfs调度算法 系统使用fair_sched_class调度类调度管理普通进程,采用的策略有:SCHED_NOMAL和SCHED_BATCH。 CFS调度算法采用红黑树方式组织进程或进程组,红黑树的键值为虚拟时间:vruntime。虚拟时间越...
2018-04-13 10:19:07 1000
原创 linux周期性调度器-CFS调度(二)
参考:https://blog.csdn.net/gatieme/article/details/52068050 系统中有5个调度类:stop_sched_class、dl_sched_class、rt_sched_class、fair_sched_class、idle_sched_class。为了叙述和分析的方便,这里就对fair_sched_class调度类下的周期性调度器进行分析。 ...
2018-04-13 10:18:57 413
原创 linux进程调度器概述(一)
进程分为实时进程和普通进程,实时进程主要为音频、视频等相关的进程;普通进程主要为:交互式进程(文档编辑器)和批处理进程(编译器)。 linux调度器分为周期性调度器和主调度器;周期性调度器在schedule_tick中实现,主调度器在schedule中实现。 每个cpu都会产生tick event,在tick event中调用schedule_tick,完成周期性调度器的任务:...
2018-04-13 10:15:16 800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人