
Android/linux杂学
悟空明镜
做一个快乐和健康的人。
mail:samarxie@126.com
展开
-
Linux内核tracepoints
文章转载: https://www.cnblogs.com/muahao/p/7999281.html具体的可以参考kernel的文章,路径如下:Documentation/trace里面的tracepoints.txt和tracepoint-analysis.txt。这里简要说明一下,举一个小例子,怎么样使用!内核中的每个tracepoint提供一个钩子来调用probe函数。一个tracepoint可以打开或关闭。打开时,probe函数关联到tracepoint;关闭时,probe函数不关联到tra转载 2020-06-03 18:32:23 · 1259 阅读 · 0 评论 -
DECLARE_STATIC_KEY_FALSE--static key学习记录
最近在看kernel5.4.26的调度器代码,看到下面的:static int select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags) { struct sched_domain *tmp, *sd = NULL; int cpu =...原创 2020-03-31 13:39:59 · 1753 阅读 · 0 评论 -
Kernel space lock contention配置及其使用
概述本文涉及到的内容如下:kernel lock相关debug方式,比如lock耗时,拿不到lock,lock依赖等等trace的使用1.开启lock contenttion涉及到的config配置config LOCKDEP bool depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPP...原创 2020-03-18 18:34:43 · 2316 阅读 · 0 评论 -
[Python解析systrace.html]chrome打开systrace分析,图形显示时间点与文本时间点一一对应,方便debug使用
一、编写这个脚本的理由:抓取systrace之后,需要使用chrome在网站chrome://tracing/解析出来,但是很多时候,我们发现问题之后,需要vim systrace文件定位到具体位置。这时候问题来了,不容易查找这个task到底在文件的哪个位置。这个脚本的目的的就是解决此问题。二、使用方式在systrace上面作为零点判断的依据是irq、ipi或者task。目前抓取的systr...原创 2019-07-08 11:33:47 · 3816 阅读 · 0 评论 -
ps命令显示进程状态解析
使用ps -ax可以看到显示的信息如下: PID TTY STAT TIME COMMAND 1 ? Ss 0:01 /sbin/init 2 ? S 0:00 [kthreadd] 3 ? S 0:00 [ksoftirqd/0] 5 ? S< 0:0...原创 2018-11-01 10:39:24 · 5308 阅读 · 0 评论 -
linux kernel soft lockup/hard lockup简介及其解决思路
最近有一个朋友问到我一个kernel panic问题.由于不是做这方面的,但是了解下和其解决思路还是有必要的.一 概述在linux kernel里,有一个debug选项CONFIG_HARDLOCKUP_DETECTOR。使能它可以打开kernel中的soft lockup和hard lockup探测。这两个东西到底有什么用处那?首先,soft/hard lockup的实现在kernel/wa...原创 2018-09-27 17:48:09 · 13033 阅读 · 2 评论 -
cpu_relax()函数的意义
最近在看wake_up_process流程的时候,发现在try_to_wake_up函数里面有这么一条语句: while (p-&amp;amp;gt;on_cpu) cpu_relax();一直想弄明白cpu_relax()函数的真实含义. 我们查看这个函数的定义如下: arm32:#if __LINUX_ARM_ARCH__ == 6 || defined(CON...转载 2018-09-04 19:29:07 · 10740 阅读 · 0 评论 -
使用taskset将task绑定到指定的CPU上
目前的平台是big.LITTLE 架构,遇到一个卡顿问题,怀疑和小核上中断过于频繁有关,所以想把SF绑定到大核看看。首先ps -e获取SurfaceFlinger的pid:/ # ps -e | grep "surfaceflinger" ...原创 2018-08-29 19:18:59 · 11132 阅读 · 0 评论 -
git下载Android kernel 源码并进行编译
一. 如何获取Android 内核源码 1 如果能够访问Google网站,则直接访问如下网站: https://source.android.com/setup/build/building-kernels 进行相应的Android 内核源码下载2 如果不能访问Google网站,则 使用清华的镜像下载对应源码: 名称 清华服务器地址 common http...原创 2018-08-27 17:36:20 · 6909 阅读 · 1 评论 -
在linux kernel中添加私有的ftrace event两种方式(trace_printk)
以实际例子来阐释整个实现过程。 1.测试驱动如下(定时获取某个cpu的当前频率和最高频率):#include &amp;amp;amp;lt;linux/init.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;linux/kernel.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;linux/kernel_stat.h原创 2018-08-23 18:58:31 · 7105 阅读 · 0 评论 -
linux kernel insmod模块出现的两个错误以及解决方案
编译了自己的驱动,但是insmod出现问题: 第一个问题: [ 12.722535] sciu2s: module verification failed: signature and/or required key missing - tainting kernel [ 12.722560] sciu2s: Unknown symbol usb_serial_deregister_...原创 2018-08-21 09:43:36 · 15487 阅读 · 4 评论 -
container_of(ptr, type, member) 解析
看代码的时候经常看到contain_of函数的使用,之前也看过其原理,但是没有深入理解,今天有时间就抽空好好研究下其来龙去脉。该宏在include/linux/kernel.h中实现的:/** * container_of - cast a member of a structure out to the containing structure * @ptr: the po...转载 2018-08-16 17:44:11 · 1526 阅读 · 0 评论 -
怎样在linux下对U盘进行格式化和分区
说明,为了做无用功,首先必须卸载要分区的设备,分区才能执行成功。通过命令umount /media/?? 或者umount /mnt/???看你的实际情况,这一步必不可少。1、首先通过命令fdisk -l 在root命令下查看U盘的分区信息。2、通过fdisk命令对挂载的设备进行分区操作,命令如下:fdisk /dev/sdb (可能不一定是这样,按照实际情况而定)。原创 2013-10-29 19:16:13 · 2524 阅读 · 0 评论