原创 LSM(Linux Security Modules)框架原理解析

1. 基本原理 LSM是內核安全模塊的一套框架,本質是插樁法。它的主要有兩個特點: 1、在內核安全相關的關鍵路徑上插入了Hook點: 內核安全相關的關鍵對象有:task_struct(任務和進程)、linux_binprm(程

原创 使用ftrace分析函數性能

0. 背景 ftrace的功能非常強大,可以在系統的各個關鍵點上採集數據用以追蹤系統的運行情況。既支持預設的靜態插樁點(trace event),也支持每個函數的動態插樁(function tracer)。還可以利用動態插樁來測量

原创 Linux fanotify 解析

Linux fanotify 解析1. 基本介紹1.1 基本原理1.2 fanotify基本功能2. 用戶態實現2.1 實例代碼2.2 API介紹3. 內核實現3.1 配置fanotify3.1.1 fanotify_init()

原创 AM335x TP驅動解析

文章目錄1. 電阻屏原理2. ADC2.1 Device:2.2 Driver:3. TouchSceen3.1 Device3.2 Driver3.3 uDev4. KeyBoard4.1 Device4.2 Driver5.

原创 火焰圖(FlameGraph)的使用

文章目錄1. Perf基礎1.1 Perf的安裝1.2 Perf的使用2. 火焰圖2.1 生成火焰圖2.2 生成紅藍差分火焰圖2.3 oncpu/offcpu參考文檔: 1. Perf基礎 1.1 Perf的安裝 ubuntu 1

原创 Linux gpio、pinctl 驅動解析

文章目錄1. gpio使用實例1.1 dts定義1.2 platform driver1.3 driver probe1.4 常用gpio操作函數1.5 pinctrl配置1.6 寄存器調試2. gpio sys文件系統3. gp

原创 Linux i2c RTC 驅動解析

Linux i2c RTC 驅動解析1. i2c adapter1.1 device (dts)1.2 driver1.3 i2c transfer1.4 i2c-dev1.5 pin mux2. i2c client2.1 de

原创 LTP(Linux Test Project)使用指南

文章目錄1、ltp-ddt簡介1.1、ltp1.2、ltp-ddt2、環境構造2.1、交叉編譯2.2、文件系統3、測試運行 1、ltp-ddt簡介 1.1、ltp LTP(Linux Test Project)是由SGI,OSDL

原创 Linux ftrace 2.2、trace event的使用

參考原文:Event Tracing 1、Introduction: Tracepoints用來創建event tracing框架,而不需要使用創建模塊來註冊probe函數。 不是所有的tracpoint都能夠使用event tr

原创 AM335x LCD驅動解析

文章目錄1. LCD背景2. LCD驅動2.1 Device2.2 Driver2.2.1 fbmem_init()2.2.2 register_framebuffer()2.2.3 /dev/fb0 文件操作2.2.4 '/s

原创 Linux 死機復位(oops、panic)問題定位指南

一個計算機系統和一個人類社會其實是差不多的,系統在運行中碰到的各種bug相當於人類社會中的各種案件:user space發生的bug危害性一般,可能就相當於一般的民事案件;kernel層面發生bug引起系統死機復位,屬於性質特別惡

原创 AM5728 IPC機制解析

文章目錄1. platform bus layer的實現1.1 dsp加載命令1.2 platform device1.3 platform driver1.3.1 omap_rproc_probe()1.3.2 rproc_ad

原创 x86 PerCPU變量基址(gs寄存器)的原理

0. 引子 我們在調試的時候發現,x86下有一個快捷方法,只需一條簡單的彙編指令mov %gs:var就能取出某個percpu變量在當前cpu的值,非常高效。 unsigned long get_mem_value(unsigne

原创 Linux fsck 機制

Linux fsck 機制0. 概述1. Upstart 方式 (ubuntu 14.04 32bit)1.1 配置fsck啓動1.2 配置fsck運行參數1.3 mountall.config1.4 mountall1.5 fs

原创 Android Binder 詳解

1、binder原理 縱觀現有市面上所有講binder的文章,都存在一個最大的問題:沒有講清楚binder對象是什麼? 不清楚binder對象是什麼,那就不能理解handle是什麼?不能理解什麼時候是binder什麼時候是hand