- 博客(15)
- 问答 (11)
- 收藏
- 关注
原创 Linux 系统调用简析
Release log:2021-06-02 三: 完成初版原文地址参考《庖丁解牛 Linux 内核分析》用户态、内核态和中断现代 CPU 一般都有几种不同的指令执行级别,在高的执行级别下,代码可以执行特权指令,访问任意的物理内存。Intel x86 CPU 有 4 种不同的执行级别,分别是 0、1、2、3,数字越小,权限越高。Linux 操作系统中只采用了其中的 0 和 3 两种特权级别,分别对应内核态和用户态。用户态和内核态很显著的区分方法就是 CS:EIP 的指向范围。在 32 位 x
2021-06-02 09:55:52 176
原创 并发与竞态——除了锁之外的办法
Release log:2021-05-30 日: 完成初版原文地址在某些情况下,原子的访问可以不需要完整的锁免锁算法经常用于免锁的生产者/消费者任务的数据结构之一是循环缓冲区。内核中有一个通用的循环缓冲区实现,参阅<linux/kfifo.h>原子变量如果共享的资源是一个简单的整数值,则可以使用原子变量 atomic_t一个 atomic_t 变量可以用来保存一个 int 值,但它不能记录大于 24 位的整数对应的函数// 初始化原子变量void atomic_se.
2021-05-30 17:37:25 229
原创 并发与竞态——completion
Release log:2021-05-10 一: 完成初版原文地址内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束。这个活动可能是,创建一个新的内核线程或者新的用户空间进程、对一个已有进程的某个请求,或者某种类型的硬件动作,等等。在这种情况下,我们可以使用信号量来同步这两个任务。然而,内核中提供了另外一种机制—— completion 接口。completion 是一种轻量级的机制,他允许一个线程告诉另一个线程某个工作已经完成。completion 的初始化为了
2021-05-10 21:26:13 198
原创 并发与竞态——自旋锁
Release log:2021-05-07 五: 完成初版2021-05-10 一: 添加自旋锁和信号量的对比原文地址Linux 内核中自旋锁的使用在 Linux 内核中,要使用自旋锁需要包含的文件 <linux/spinlock.h>,锁的数据类型为 spinlock_t。自旋锁的声明以及初始化void spin_lock_init(spinlock_t *lock);自旋锁的获取以及释放void spin_lock(spinlock_t *lock);void s
2021-05-10 20:54:52 156
原创 git 知识整理
Release log:2021-04-26 一: 完成初版原文地址前言使用 git,经常有一些命令,偶尔会用到,但是又不常用到,这就造成每次用的时候都需要百度。所以干脆对这些命令做一下整理,方便后续查阅全局配置与当前项目配置git 的全局配置一般保存在 ~/.gitconfig 中,而当前项目配置一般保存在 .git/config 中使用 git config 命令查看或设置配置信息,–global 表示全局配置,否则为本地配置查看当前配置信息: git config [--glob
2021-04-26 21:36:12 107
原创 并发与竞态——信号量与互斥体
说明前一段时间学习了《LINUX 设备驱动程序》中的“并发与竞态”章节,没过多久在阅读代码时,看到了 spin_lock_bh 这个函数,然后一脸瞢逼,这个函数后缀有啥意义来着?所以决定对这一章节做一个简单整理,一是为了加深印象,二是为了后续的快速回顾以及查找未完待续。。。哈哈...
2021-04-24 22:02:22 147
原创 问题记录: 在内核模块中拦截报文并保存到文件
Release log:2021-04-24 六: 完成初版原文地址背景介绍最近在跟进一个网络相关的问题,需要查看经过 __netif_receive_skb 的报文是否有异常。如果打印所有的包,由于打印太多会影响性能,并且打印的内容也不会太详细。所以决定,把监听到的报文全部保存到 pcap 文件中,然后通过 wireshark 查看这里对需要用到的知识做一个整理知识点分析怎么在内核模块中读写文件pcap 的文件格式是怎样的怎么在内核中读写文件一段简单的实例代码如下://
2021-04-24 21:39:54 1037
原创 gdb 使用方法整理(基础篇)
Release log:2021-04-18 日: 完成初版原文地址本文参考: https://blog.csdn.net/niyaozuozuihao/article/details/91802994在此基础上有些删减最近想要学习 Linux 内核,但是如果单纯的通过看书和代码来学习,会显得很枯燥,并且有些地方不容易理解。所以决定使用 qemu + gdb 的方式来跟进内核代码流程。关于怎么使用 qemu + gdb,可以 点击这里为了能够更高效的使用 gdb 跟进代码,需要重新整理一下
2021-04-18 20:08:45 198
原创 如何使用 qemu + gdb 分析 Linux 内核代码
Release log:2021-04-18 日: 完成初版原文地址如何使用 qemu + gdb 分析 Linux 内核代码环境说明操作系统: Ubuntu 20.04.2 LTS(lsb_release -a)内核版本: 5.4.0-58-generic(uname -a)qemu 版本: QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.15)linux 源码: linux-3.18.6qemu 简介以及安装
2021-04-18 03:02:13 293
转载 u-boot-2016.09 make 工具之 fixdep
u-boot-2016.09 make 工具之 fixdep本文转载自: u-boot-2016.09 make工具之fixdep概述fixdep 工具的源码位于 scripts/basic/fixdep.c,代码本身并不复杂。但作用是什么?哪里调用,如何调用,输入和输出是什么?咋一看却不甚清楚。本文废话太多,如果只想看结论,请直接跳转到文末查看“TL;DR”一节。哪里调用?到底哪里调...
2018-10-14 19:58:00 923
原创 Ubuntu 简单配置
Ubuntu 简单配置由于手贱,几次搞坏 Ubuntu 系统,不得不重装但每次重装之后,都要重新配置系统,然后就是不停的百度操作方法这次根据个人的使用习惯,把 Ubuntu 的配置过程记录下来关闭 ALT 快捷键由于使用 vim,许多功能映射都需要 alt 键来完成然而 alt 已经被系统定义为了 HUD 快捷键那么怎么关闭掉系统的 alt 快捷键呢System Settings ...
2018-10-13 00:00:49 231
转载 U-Boot-2016.09 make 配置过程分析
U-Boot-2016.09 make 配置过程分析本文转载自: u-boot-2016.09 make配置过程分析概述本文基于 U-Boot 树莓派 3 代配置过程进行分析,环境如下:编译环境:Ubuntu 14.04 LTS编译工具:arm-linux-gnueabi-gcc代码版本:U-Boot v2016.09配置文件:rpi_3_32b_defconfigU-Boot 自...
2018-10-12 23:42:19 373
转载 iptables详解(1): iptables概念
iptables详解(1): iptables概念以下内容转载自: 朱双印博客 | iptables详解系列:iptables概念 原文地址:http://www.zsythink.net/archives/1199这篇文章会尽量以通俗易懂的方式描述iptables的相关概念,请耐心的读完它。防火墙相关概念此处先描述一些相关概念。 从逻辑上讲。防火墙可以大体分为主机防火...
2018-03-14 22:12:25 375
原创 CMake学习笔记——基础篇
最近看到好多开源项目的编译配置文件都是使用CMake写的,于是花些时间学习,并做备忘整理 这篇文档以一个简单的项目为例,对CMake的常用命令进行介绍 主要包括了包含头文件路径、生成库、生成二进制文件等功能。不包括安装、测试等功能一些语法规则变量使用${ }方式取值command(arg1 arg2 …) 指令参数使用括弧括起来,参数之间使用空格或分号分开指令大小写无关,参数
2018-02-03 12:33:24 323
原创 Ubuntu 使用 xkb 修改按键映射
Ubuntu使用xkb修改按键映射目的由于使用vim时,经常要用到ESC键。奈何ESC键距离太远,操作起来很不方便,所以想把ESC键映射到CAPS键,而以前的CAPS则映射到右CTRL 最初的想法是使用xmodmap,但配置好了之后才发现xmodmap与fcitx有兼容性问题(ibus也有同样的问题)。 关于这一点还专门到fcitx的github上提了issue,但得到的回复是, 不
2018-02-01 23:45:17 1461
空空如也
ubuntu reboot 之后卡住
2022-03-16
linux 下关于 getrandom 和 /dev/urandom
2022-03-10
busybox 配置 dropbear 的问题
2022-03-04
ubuntu 怎么安装交叉工具链依赖库
2022-02-10
linux 下,怎么查看命令所在的安装包呢
2022-01-21
shell 脚本,set -e 和 crontab 命令有冲突吗
2022-01-17
怎么在 C 的宏定义中非转义的使用 #
2021-12-08
Nodejs 如何解析二进制结构体
2021-12-02
编译内核模块时,怎么传递 ld 链接脚本参数
2021-06-09
C 语言中,关于 ( ) 运算符的解释
2021-05-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人