pwl999的博客

RTFSC: Read The Fucking Source Code

Android Binder 详解

1、binder原理 纵观现有市面上所有讲binder的文章,都存在一个最大的问题:没有讲清楚binder对象是什么? 不清楚binder对象是什么,那就不能理解handle是什么?不能理解什么时候是binder什么时候是handle,那就不能真正理解整个IPC的通讯过程。 我们首先回到bi...

2018-12-12 19:32:31

阅读数 323

评论数 0

systrace 解析

上图基本就能说清systrace的整个框架: 1、systrace调用atrace抓取目标机的trace数据; 2、systrace把trace数据和’prefix.html’、‘suffix.html’、'systrace_trace_viewer.html’合成一个’trace.h...

2018-10-29 18:35:57

阅读数 1135

评论数 0

Linux bpf+bcc(目录)

1、内核态解析: 1.1、bpf内核框架 2、用户态(前端)解析: 2.1、bcc 3、参考资料: 3.1、Berkeley Packet Filter (BPF) (Kernel Document) 3.2、BPF and XDP Reference Guide 3.3、DTra...

2018-10-16 11:47:49

阅读数 227

评论数 0

Linux perf(目录)

1、内核态解析: 1.1、perf_event内核框架 1.2、tracepoint events 1.3、software events 1.4、hardware events 2、用户态解析: 2.1、simpleperf perf工作的基础是trace...

2018-08-03 19:22:49

阅读数 440

评论数 0

Linux ftrace(目录)

Ftrace从字面上理解=Function trace,但是发展到现在已经不仅仅是function trace而是一个大集合,鉴于其搭建的良好的框架(ringbuffer、tracefs…),各种trace纷纷投奔而来。现在大概分为两大类:tracer、event。 tracer。发展出了fu...

2018-06-15 10:48:28

阅读数 386

评论数 0

Device Tree 详解

1、DTS语法 对于DeviceTree的来历和用处大部分人都已经非常了解了,DeviceTree发源于PowerPC架构,为了消除代码中冗余的各种device注册代码而产生的,现在已经成为了linux的通用机制。 DeviceTree的结构非常简单,由两种元素组成:Node(节点)、Prop...

2018-03-20 20:47:12

阅读数 3741

评论数 0

Linux schedule (目录)

本来打算一篇发表的,但是写的太长太长了,注释了很多代码,只能分成一章一篇了。1、调度的时刻2、调度算法3、负载计算4、负载均衡5、EAS(Energy-Aware Scheduling)6、Cgoup

2017-12-16 03:13:00

阅读数 1661

评论数 4

Linux Interrupt

在面试的时候我们常常问或者被问一个问题:几种中断下半部机制softirq、tasklet、workqueue有什么区别?linux为什么要设计这几种机制?真正能够回答清楚的人还是少数的。下面我们就详细分析一下这其中的区别。

2017-10-11 16:24:06

阅读数 716

评论数 0

Linux 进程的Stop,Park,Freeze

在调试内核的时候,经常会碰到几个相近的概念:进程stop、进程park、进程freeze。这几个名词看起来都是停止进程,那么他们之间的区别和应用场景在分别是什么呢?下面就来分析一番。 本文的代码分析基于linux kernel 3.18.22,最好的学习方法还是”RTFSC” 1.进程stop...

2017-10-11 15:48:09

阅读数 507

评论数 0

Linux Workqueue

workqueue是内核里面很重要的一个机制,特别是内核驱动,一般的小型任务(work)都不会自己起一个线程来处理,而是扔到workqueu中处理。workqueue的主要工作就是用进程上下文来处理内核中大量的小任务。 所以workqueue的主要设计思想:一个是并行,多个work不要相互阻塞;...

2017-10-11 15:30:50

阅读数 549

评论数 0

Linux Signal

信号的基本使用场景:使用“ctrl+c”中止一个程序,或者使用”kill pid”命令杀掉一个进程。 Linux信号机制基本上每个同学都用过,但是信号的具体实现机制还是有很多人不清楚的。在很多人的概念中信号是一种异步机制,像中断一样。但是除了硬中断,信号也是由中断实现的吗?如果不是中断,系统又怎...

2017-10-11 14:48:49

阅读数 327

评论数 0

Linux Time

1、Linux时钟框架上图是linux时钟框架一个经典的描述。本质上linux各种时钟架构和服务是基于硬件提供的两种timer而构建的。1、定时Timer 这类timer每个cpu都有一个独立的,称为local timer。这类timer的中断一般都是PPI(Private Peripheral ...

2017-10-11 14:10:29

阅读数 1522

评论数 0

Linux bpf 2.1、bcc的实现

bcc全称为(BPF Compiler Collection),它是模仿gcc(GNU Compiler Collection)的命名风格。 BPF是运行在内核态的一种虚拟机语言,我们在用户态可以通过Clang+LLVM把c语言编译成BPF目标码,然后通过加载器loader(bcc/perf/ip...

2018-10-16 11:46:35

阅读数 191

评论数 0

Linux bpf 1.1、BPF内核实现

BPF的字面上意思Berkeley Packet Filter意味着它是从包过滤而来。如果在开始前对BPF缺乏感性的认识建议先看一下参考文档:“3.1、Berkeley Packet Filter (BPF) (Kernel Document)”、“3.2、BPF and XDP Referenc...

2018-09-28 15:36:04

阅读数 1082

评论数 0

Linux bpf 3.2、BPF and XDP Reference Guide

开源软件Cilium深度的使用了BPF来做网络安全,它的文档中使用了一个章节专门的来介绍BPF的原理和使用。 参考原文:BPF and XDP Reference Guide 注意:本文档部分针对的是希望深入了解BPF和XDP的开发人员和用户。尽管阅读本参考指南可能有助于拓宽你对Cili...

2018-09-14 17:45:32

阅读数 860

评论数 1

Linux bpf 3.1、Berkeley Packet Filter (BPF) (Kernel Document)

关于bpf最早是应用于network的filter,后续才被应用到trace,所以kernel中关于bpf的文档是”Documentation/networking/filter.txt”。 参考原文:Linux Socket Filtering aka Berkeley Packet Fi...

2018-09-07 20:44:42

阅读数 493

评论数 0

Linux perf 2.1、simpleperf

因为perf原生的用户态工具(kerneldir/tools/perf)交叉编译出错较多,用户态源码分析改用android 7.0简化版simpleperf来分析。simpleperf支持完整perf命令中的一些常见子命令。 1、命令框架 源码入口在system/extras/simple...

2018-08-03 19:17:07

阅读数 677

评论数 0

Linux perf 1.4、hardware events

可以通过perf list命令来查看系统中的hardware event: # simpleperf list hw List of hardware events: cpu-cycles instructions cache-references cache-misses ...

2018-08-02 16:24:52

阅读数 332

评论数 0

Linux perf 1.3、software events

可以通过perf list命令来查看系统中的software event: # simpleperf list sw List of software events: cpu-clock task-clock page-faults context-switches cp...

2018-07-31 15:20:38

阅读数 173

评论数 0

Linux perf 1.2、tracepoint events

perf复用了ftrace中trace_event的所有插桩点(即tracepoint),trace数据即可以通过ftrace的通道提供,也可以被包装成perf_event供perf工具使用。 可以通过perf list命令来查看系统中的tracpoint event,可以看到和/sys/ker...

2018-07-26 15:44:34

阅读数 388

评论数 0

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