算法和数据结构纷繁复杂,但是对于Linux Kernel开发人员来说重点了解Linux内核中使用到的算法和数据结构很有必要。
在一个国外问答平台stackexchange.com的Theoretical Computer Science子板有一篇讨论实际使用中的算法和数据结构,Vijay D做出的详细的解答,其中有一部分是Basic Data Structures and Algorithms in the Linux Kernel对Linux内核中使用到的算法和数据结构做出的归纳整理。详情参考这里。
同时有一篇中文翻译在https://linux.cn/article-2317-1.html可以找到。
下面就以Vijay D的回答作为蓝本进行学习总结。
测试方法准备
由于需要在内核中进行代码测试验证,完整编译安装内核比较耗时耗力。准备采用module形式来验证。
Makefile
obj-m:=linked-list.o KERNELBUILD:=/lib/modules/$(shell uname -r)/build default: |
linked-list.c
#include <linux/module.h> #include <linux/init.h> #include <linux/list.h> int linked_list_init(void) void linked_list_exit(void) module_init(linked_list_init); |
安装module
sudo insmod linked-list.ko |
查找安装情况
lsmod | grep linked-list |
执行log
<4>[621267.946711] linked_list_init <4>[621397.154534] linked_list_exit |
删除module
sudo rmmod linked-list |