自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 qemu调试命令备份

1. 普通执行:run_qemu_aarch64.sh qemu-system-aarch64 -machine virt -cpu cortex-a53 -machine type=virt -nographic -m 8192 -smp 8 -kernel ~/linux-4.19.81/a...

2020-05-04 16:36:57 71 0

原创 vm_normal_page深入理解

其实这个函数的注释已经非常详细,细细品味分享自己的理解。对应的内核版本是4.14.129 ARM64. /* * vm_normal_page -- This function gets the "struct page" associated with a pte. * *...

2020-01-04 23:42:33 264 0

原创 MPSOC ZCU102 petalinux环境搭建问题记录

最近在研究MPSOC,搭建参考:ug1144-petalinux-tools-reference-guide.pdf,个人用的Ubuntu18.10,虚拟机。 1. Ubuntu下/bin/sh用的是dash,记得把使用sudo dpkg-reconfigure dash切换为bash. 2....

2019-03-23 08:42:47 444 0

原创 TREE RCU个人理解【待补充】

有待补充

2019-01-05 12:30:19 142 3

翻译 The design of preemptible read-copy-update【待翻译】

https://lwn.net/Articles/253651/ 待翻译  

2019-01-05 12:27:49 173 0

原创 基于kernel2.5.43对第一版经典RCU实现的思考

最近在研究RCU机制,想从RCU的历史源头开始深入理解(追溯根源会有意想不到的收获,至少可以从代码演进过程中领略大牛们的思想)。 想到这里,网上也有很多和我一样想法的人士,特别感谢这篇文章: http://www.wowotech.net/kernel_synchronization/Linu...

2019-01-05 10:57:14 117 0

原创 printk一些优化想法——增加核号打印(有缺陷)

故障定位过程中发现多个核调用printk时,很难直观的看到每一行是哪个核打印的。 因此想能不能在每行前增加核号打印"[x]",试了半天,在vprintk_emit里尝试增加this_cpu的字符串转换。 效果是有的,但是有些缺陷。因为text的前两个字符时是给printk等...

2018-12-05 21:25:45 319 0

原创 内核小技巧——强制设置进程运行核 select_task_rq

故障定位过程中,业务进程没有做核绑定,导致每次都是通过负载均衡动态选择运行核, 导致很多时候业务进程出现在核0上死循环(系统态),串口都没反应。 由于是第三方负责启动,无法通过taskset命令指定核号启动。不过我们知道执行进程的ELF名字,因此想到是否可以通过内核强制设置进程运行核号。 关...

2018-12-05 21:06:29 324 0

原创 基于PPC64架构 Linux 内核信号处理过程栈处理分析

handle_rt_signal64主要负责信号处理栈处理分析,如下图所示 int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) { struct rt_sigframe __use...

2018-12-04 23:34:55 287 0

原创 DPDK17.05 第一次试用心得与问题记录

最近由于优化性能需求,特意了解dpdk-17.05。在虚拟机上第一次安装试用,发现还是有很多坑哈。 下载地址不说了,度娘一下吧。 记录一下问题吧: 1. 首先虚拟机要配置两个网卡以上,而且必须都是host-only模式。我配置了三个网卡,一个NAT模式,另外两个host-only。 结果悲...

2017-06-15 21:36:03 1896 4

原创 关闭L2 cache的方法

最近在powerpc b4860上测试,需要关闭L2 cache,发现系统启动过程怎么设置都不行,一旦设置系统就会启动异常。 突然想起,有没有可能是U-Boot阶段L2 cache已经在使用,这时候再关闭已经来不及啦。 因此,在UBoot阶段,先flush+无效L2 cache,再关闭L2 c...

2017-04-23 16:34:46 1647 0

原创 make menuconfig关闭imx6q开发板的L1 cache/L2 cache

最近在做一些cache测试,需要关闭L1/L2 cache。ARM的内核关于cache的配置做得比较完善,可以通过menuconfig配置。 System Type-》Disable I-Cache  //L1 I-cache System Type-》Disable D-Cache //...

2017-04-19 21:25:09 1317 0

原创 imx6q ARM cotex-A9 参考手册

最近在研究imx6q这款ARM的PMU,cache等,遇到了一些问题。 也找到很多参考手册,特别是DDI0406C_C_arm_architecture_reference_manual.pdf 这个详细介绍cotex-A9的体系架构。 64位ARM芯片使用v8体系架构,参考文档:DEN00...

2017-04-19 21:16:23 3302 0

原创 lmbench3 lat_mem_rd的测试结果记录

默认情况下,L1 cache/L2cache都打开: / # lat_mem_rd 128M "stride=128 0.00049 4.019 0.00098 4.019 0.00195 4.019 0.00293 4.019 0.00391 4.019 0.005...

2017-04-19 21:11:14 2251 0

原创 解决perf在imx6q上读写PMU event counter都是零

最近在用perf分析性能,在imx6q上验证PMU event采样,发现cache-misses等硬件事件计数都是0,瞬间崩溃。 傻乎乎分析啦perf代码,感觉应该不是perf代码原因,到freescale官网上找到一片类似的问题: https://community.nxp.com/thread...

2017-04-19 21:00:37 1435 1

原创 lmbench3 完整移植

首先,下载一份源代码:http://www.bitmover.com/lmbench/get_lmbench.html 然后解压。 export PATH=$PATH:/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-20...

2017-04-19 20:44:58 1850 0

转载 perf 移植心得

从以下地址成功移植了perf,谢谢tony-liu。 转载地址:http://www.cnblogs.com/helloworldtoyou/p/5585152.html 更正了一些内容,主要是zlib编译交叉工具链 zlib编译与安装 ./configure --prefix=$CR...

2017-04-09 18:57:12 1565 0

原创 iperf-2.0.5移植到IMX6DQRM的linux-3.0.35

首先导出交叉编译链的路径: export PATH=$PATH:/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/ 切换到iperf-2.0.5的主目...

2017-03-16 22:03:17 1087 0

原创 ARM 全局页表与二级页表转换调试

最近在看ARM的内存管理,刚好看到全局页表swapper_pg_dir,看了很久细想能否直接通过查看内存方式查看swapper_pg_dir的内存: 幸好之前弄过/dev/mem,知道可以把物理内存映射出来。 先贴工具代码: #include #include #include ...

2016-08-19 20:33:03 1616 0

原创 alloc_node_mem_map的offset作用

看这个函数过程中看到pgdat->node_mem_map = map + offset;这个为什么加offset呢? 原来是计算本节点的mem_map数组的size的时候,start对齐到~(MAX_ORDER_NR_PAGES - 1),无形中在开头和结尾增加了mem_map的大小, ...

2016-08-07 15:42:32 834 0

原创 ramdisk制作过程记录

一. ramdisk.gz.uboot自作过程: 1. 创建一个loop目录,作为挂载点: mkdir loop 2. 获取一个10M的镜像,count会在kernel配置中使用: dd if=/dev/zero of=ramdisk bs=1k count=10240 3. 格式化为ext2:...

2016-06-19 17:42:47 4190 0

原创 通过/dev/mem实现用户层访问GPIO寄存器

由于工作需要用到GPIO设置成中断模式,但是不知道连线是否已经连接到指定的GPIO引脚, 而且配置是否成功,因此通过/dev/mem来查看GPIO的配置是否成功是必须的。 记录一下: #include #include #include #include #include ...

2015-08-30 17:04:21 1588 0

原创 使用SOCK_RAW构建全网广播包

使用SOCK_DGRAM在Linux上发送全网广播包: #include #include #include #include #include #include #include #include #include #include #include #include ...

2015-08-29 23:01:20 735 0

原创 pid、tpid的区别

Linux系统函数getpid获取的是进程描述符task_struct的tgid(thread group identifier),而pid(process identifier)是系统管理所有进程的id。 测试代码: #include #include int *thread(void *...

2015-03-08 11:03:32 3254 0

原创 盲人摸象、指鹿为马——命名空间

命名空间,其实很多时候就是指同一样东西,在不同的拥有者眼里属于不一样的定义。 这里想古代的几个成语:盲人摸象、指鹿为马等,大家感觉是不是这种意思?

2015-03-08 09:04:03 429 0

原创 换工作咯

最近在换工作,好累,好心酸,知识面广,可惜没有实战经验。怪就怪自己过得太轻松吧,今年开始加油吧。

2015-03-05 21:56:42 434 0

原创 NET_SKBUFF_DATA_USES_OFFSET分析

在分析3.0.4内核的网络包sk_buff时,发现: sk_buff_data_t transport_header; sk_buff_data_t network_header; sk_buff_data_t mac_header; /* These elements must be...

2014-12-23 21:01:16 949 0

转载 内核栈大小

LDD3曾说过:内核具有非常小的栈,它可能只和一个4096字节大小的页那样小。 我知道之前文章:Linux红黑树编程实例,图形化显示红黑树 最后提到的问题,说递归出现问题,就是因为内核栈大小太小,导致异常。 Linux内核栈溢出(stack overflow)问题 最近一段时间在设计和开发...

2014-12-08 22:57:54 2951 0

原创 Linux 位图记录

最近在看Linux内核中断描述符,看到 struct irq_desc *irq_to_desc(unsigned int irq) { return radix_tree_lookup(&irq_desc_tree, irq); } 记录一下 static RADIX_T...

2014-11-26 21:48:25 618 0

原创 Linux内核调试理清函数调用

最近在调试内核中断代码时发现一个很好用的宏,在linu/kernel.h: #define _RET_IP_ (unsigned long)__builtin_return_address(0) #define _THIS_IP_  ({ __label__ __here; __here: (...

2014-11-26 21:37:38 468 0

原创 针对ARM Linux内核swapper_pg_dir简单分析

针对swapper_pg_dir在ARM上的简单分析

2014-11-24 22:35:16 2825 0

原创 Linux内核中硬链接和软连接的深入分析

1.Linux链接概念: Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分...

2014-11-24 21:07:08 693 0

原创 从proc目录下的zoneinfo认识Linux内存管理

最近在看Linux内存管理,从head.S到main.c

2014-11-23 09:28:45 6787 1

原创 Linux红黑树编程实例,图形化显示红黑树

Linux上直观显示红黑树结构,方便大家测试验证

2014-11-23 09:05:32 1289 0

原创 一个Linux内核利用init_task进行进程管理的简单例子

例子来自:http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/

2014-11-15 12:37:18 1380 0

原创 marsboard Android 4.4 添加开机自动设置静态IP地址

最近在帮忙调试Android设备,需求就是开机设置静态IP地址

2014-11-12 22:14:56 4847 0

原创 蓝牙认证测试调试记录

这周由于工作原因,协助研发

2014-09-07 08:57:21 9456 0

转载 netfilter实现内核重构skb来发送udp包

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include ...

2014-07-25 10:03:07 1808 1

原创 Creating Linux virtual filesystems 学习

根据这两篇  http://lwn.net/Articles/57369/ http://blog.chinaunix.net/uid-317451-id-92430.html

2014-07-23 09:54:08 732 0

转载 使用 FUSE 开发自己的文件系统

文件系统是一种用来存储和组织计算机文件、目录及其包含的数据的方法,它使文件、目录以及数据的查找和访问得到简化。如果您正在使用一台计算机,很可能使用了多个文件系统。文件系统能提供丰富的扩展能力。它可以编写成底层文件系统的一个封装程序,从而对其中的数据进行管理,并提供一个增强的、具有丰富特性的文件系统...

2014-07-22 10:42:44 868 0

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