原创 Linux內核同步機制

Linux內核同步機制,常用的有自旋鎖,信號量,互斥體,原子操作,順序鎖,RCU,內存屏障等。 本篇主要介紹原子操作,自旋鎖,信號量和內存屏障。 原子操作 原子操作可以保證指令以原子的方式進行執行,執行過程不被打斷。 AP

原创 linux 內核筆記--中斷子系統之softirq

linux把處理硬件中斷的過程分爲兩部分。上半部簡單快速,執行時禁止部分或全部中斷。下半部稍後執行,並且執行期間可以響應所有的中斷。這樣的設計會使系統處於中斷屏蔽的狀態儘可能的短,從而提高系統的響應能力。 下半部的處理方式主要有

原创 ARM GICv3 ITS介紹及代碼分析

前言: 在ARM gicv3中斷控制器,有提到過ITS的作用,本篇就ITS進行更詳細的介紹以及分析linux 內核中ITS代碼的實現。 本文基於linux 4.19,介紹DT方式初始化的ITS代碼。 ITS概述: 在GICv3中定

原创 Linux 內核筆記之高層中斷處理

本文基於Linux kernel 4.19.0, 體系結構是aarch64 中斷處理入口 在ARM GICv3 GIC代碼分析一文中,有分析到在GIC 控制器初始化時會設置ARM中斷控制器的中斷處理函數 handle_arch_i

原创 ARM GICv3代碼分析

前言 在前一篇博文(ARM GICv3中斷控制器)中, 介紹了GIC的一些基本概念,本文主要分析了linux kernel中GIC v3中斷控制器的代碼(drivers/irqchip/irq-gic-v3.c) linux kern

原创 ARM GICv3中斷控制器

1. 前言 GIC,Generic Interrupt Controller。是ARM公司提供的一個通用的中斷控制器。主要作用爲: 接受硬件中斷信號,並經過一定處理後,分發給對應的CPU進行處理。 當前GIC 有四個版本,GIC v1

原创 Linux內核筆記之KASLR

本文基於linux 4.19.0,體系結構是arm64 KASLR KASLR, kernel address space layout randomization,內核地址空間佈局隨機化,是linux內核的一個非常重要的安全機制。K

原创 Linux內核中的幾種自旋鎖的實現

前言 自旋鎖是爲實現保護共享資源而提出一種鎖機制。自旋鎖不會引起調用者睡眠,如果自旋鎖已經被別的執行單元保持,調用者就一直循環在那裏看是否該自旋鎖的保持者已經釋放了鎖,"自旋"一詞就是因此而得名。 本文主要介紹了linux kerne

原创 linux內核驅動編程的一道陷阱題

看過一道linux內核驅動編程的題目,我覺得有點價值。 題目很簡單,憑記憶整理了下,代碼如下: #include <linux/init.h> #include <linux/module.h> #include <linux/del

原创 centos使用qemu搭建ARM64運行環境

準備工作 (1) linux 內核源碼, 從github上獲取 git clone https://github.com/torvalds/linux make kernelversion (2) 交叉編譯工具,從linaro官網(

原创 ARM aarch64彙編學習筆記(九):使用Neon指令(一)

NEON是一種基於SIMD思想的ARM技術。 SIMD, Single Instruction Multiple Data,是一種單條指令處理多個數據的並行處理技術,相比於一條指令處理一個數據,運算速度將會大大提高。 ARMv8 有3

原创 Linux DTS 設備樹

原文:http://blog.csdn.net/woshidahuaidan2011/article/details/52948732 設備樹就是有一些屬性和節點組成的一種數據結構,屬性一般會賦予一些屬性

原创 ARM aarch64彙編學習筆記(一):搭建編譯環境

最近,對arm的彙編產生了興趣,之前對彙編的知識掌握的不深,算是從零學習吧,用blog記錄下學習的點滴,希望能夠堅持下去。 環境搭建 市面上其實是有一些arm64位的服務器可以供選擇的,比如cavin的thunder x2,華爲的泰山服務

原创 linux 內核筆記之watchdog

watchdog 簡而言之,watchdog是爲了保證系統正常運行,或者從死循環,死鎖等一場狀態退出的一種機制。 看門狗分硬件看門狗和軟件看門狗。硬件看門狗是利用一個定時器電路,其定時輸出連接到電路的復位端,程序在一定時間範圍內對定時器清

原创 linux內核時間管理(一) : 時間概念和延遲操作

內核中的時間概念 HZ: Linux 核心每隔固定週期會發出timer interrupt (IRQ 0),HZ是用來定義每一秒有幾次timer interrupts。舉例來說,HZ爲1000,代表每秒有1000次timer inter