
Linux实践
从理论到实践,深入Linux内核
董lucky
种一棵树最好的时间是十年前,其次是现在。
展开
-
bcc基础代码——Hello world
bcc代码——Hello,world1、简单监控clone()系统调用,将相关的信息打印出来#!/usr/bin/pythonfrom bcc import BPFBPF(text="""int kprobe__sys_clone(void *ctx){ bpf_trace_printk("hello,world!\\n"); return 0;}""").trace_print()test="…"包含的是C语言编写的BPF程序kprobe__sys_clone()对应内核kpr原创 2021-03-07 15:38:55 · 720 阅读 · 0 评论 -
【Linux】中断实践(一)
中断实践(一)中断基础知识见:https://blog.youkuaiyun.com/DXflighting/article/details/111600973实验内容:自己虚拟出来一个设备,将该设备注册到系统中,执行自己写的中断服务例程。我们要写一个中断内核模块,申请一个中断线,一个中断线对应一个IRQ号,虚拟出来的设备可以与其他中断线共用一条。# include <linux/kernel.h># include <linux/init.h># include <linu原创 2020-12-25 11:17:21 · 279 阅读 · 0 评论 -
【linux模块】打印进程虚拟内存空间
编写内核模块:实现打印进程地址空间进程地址空间相关的知识在博客:【linux】进程地址空间 ,内核模块的相关介绍与基本操作在:【linux】内核模块的插入与删除,建议看完基础知识再来学习打印进程地址空间。首先我们写一个程序(为打印进程地址空间做准备):#include <stdio.h>#include <stdlib.h>#include <unistd.h>int A;int B=0;int C=2;static int D;static int原创 2020-10-23 12:04:39 · 1108 阅读 · 0 评论 -
【Linux】内核模块的插入和删除
Linux内核模块的插入和删除由于现在编译一次内核需要很长时间,那么有没有一种办法让我们写的代码不需要完全和Linux内核完全捆绑在一起?由此Linux内核提供了一种机制,叫可加载的Linux内核模块(LKD),即在Linux内核运行期间,可以把这个模块加载到Linux内核,当我们不需要这个模块时可以把这个模块卸载。下面将演示Linux内核模块从插入到删除的全过程:1、在ubuntu下创建helloworld.c文件,文件内容如下: 1 //必要的头文件 2 #include<linux原创 2020-10-03 00:17:55 · 1525 阅读 · 0 评论