Blogs

使用eBPF&bcc提取内核网络流量信息(二)

由 梁金荣 | 3400字 | 阅读大约需要7分钟 | 归档于eBPF

2020年8月3日

使用eBPF&bcc提取内核网络流量信息(一)已经将流量信息提取出来,本文将通过分析内核源码,扩展此bcc,为其增加源地址、源端口、目的地址、目的端口等字段。

继续阅读

linux内核空间与用户空间信息交互方法

由 梁金荣整理 | 8000字 | 阅读大约需要16分钟 | 归档于linux

2020年8月2日

在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。

继续阅读

Applying Patches To The Linux Kernel

由 梁金荣整理 | 3400字 | 阅读大约需要7分钟 | 归档于linux

2020年8月2日

A frequently asked question on the Linux Kernel Mailing List is how to apply a patch to the kernel or, more specifically, what base kernel a patch for one of the many trees/branches should be applied to. Hopefully this document will explain this to you.

继续阅读

Linux内核中的循环缓冲区

由 作者:王聪 编辑:崔鹏程 | 2000字 | 阅读大约需要4分钟 | 归档于经验交流

2020年8月2日

Linux内核中的循环缓冲区(circular buffer)为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个,而在其它情况下使用它也是必须要加锁的。

继续阅读

Linux使用内核模块添加系统调用的方法(无需编译内核)

由 梁金荣 | 2000字 | 阅读大约需要4分钟 | 归档于系统调用

2020年8月1日

本文将介绍Linux使用内核模块添加系统调用(无需编译内核),思路就是修改映射在内存中的系统调用表,把一个空闲的系统调用表项指向自己写的模块中的函数,如果是已使用的表项,甚至可以实现系统调用劫持。

继续阅读

使用bcc提取内核网络流量信息

由 梁金荣 | 2700字 | 阅读大约需要6分钟 | 归档于eBPF

2020年7月28日

本文将分享从0开始编写自己的bcc程序用来提取内核网络流量信息。那么开始编写bcc之前,自己一定要明确,我们要用bcc提取什么数据。本文的实例将会提取的数据关键字段为进程的PID,进程的名字,进程的收包实时流量、发包实时流量,收包流量总和,发包流量总和,总的收发流量等。

继续阅读

Linux设备驱动模型(四)-核心对象之演绎

由 编辑:戴君毅 | 3000字 | 阅读大约需要6分钟 | 归档于文件系统

2020年7月27日

话说kboject是驱动模型的核心对象,但在sysfs文件系统中似乎并没有对应的项,而这种看似“无”,实际上蕴藏着“有”。

继续阅读

sock、socket和tcp_sock之间的关系

由 作者:张孝家 | 2200字 | 阅读大约需要5分钟 | 归档于内核网络

2020年7月27日

这篇文章介绍sock、socket和tcp_sock结构体之间的关系。

继续阅读

Linux进程调度中队列的使用

由 作者:王聪 编辑:张孝家 | 1900字 | 阅读大约需要4分钟 | 归档于经验交流

2020年7月27日

Linux内核中大量使用了队列,这里仅列举它在进程调度中的几处应用。Linux内核中的队列是以双链表的形式连接起来的,include/linux/list.h中定义了队列并提供了一些接口,详细的介绍可以参考[1]中的附录。

继续阅读

小谈驱动开发中的时钟调试

由 作者:康华 编辑:崔鹏程 | 900字 | 阅读大约需要2分钟 | 归档于经验交流

2020年7月25日

本文小谈了驱动开发中的时钟调试,先说了作者碰到的时钟问题,再说了如何调试时钟,是一篇值得阅读的文章

继续阅读