【发布时间】:2022-01-06 05:48:50
【问题描述】:
这是我第一次在这里写问题,所以如果信息丢失或我写错了格式,我提前道歉。我目前正在参加一个系统课程,我们正在使用 Ubuntu VM 学习“基本”Linux 指令和命令/编程。我们目前的项目是编写自己的 Kernel-Modul 并安装在 Linux 中。不幸的是它是德语的,但会发布整个内容并尽我所能翻译。
Bauen Sie ihr eigenes Kernel-Modul mod_kmalloc.ko。 Hierzu müssen Sie ein eigenes C-File anbieten und den Makefile anpassen。 Ihr Modul soll den Parameter „loop_cnt“ nehmen, der angibt wie häufig Speicher der Größe „alloc_size“ (ein weiterer Parameter) allokiert werden soll。 Diese Speicherallokation messen Sie mittels des 时间戳计数器 mittels der Instruktion „rdtsc“ (auf Intel x86 / AMD64) bzw。 mit hrtimers (ARM) und geben das auf der Kernel-Console mittels printk() aus
我们应该构建自己的 Kernel-Modul 并将其命名为 mod_kmalloc.ko。然后我们使用 loop_cnt 参数,它告诉我们使用 alloc_size 分配内存的频率,使用另一个参数,以及应该多久分配一次。为了测量我们需要使用 rdtsc 命令的数量,然后通过 printk() 命令/函数将所有内容发送到控制台。
根据我目前所学和理解的内容,我制作了一个“正确”的 Makefile。
obj-m = mod_kmalloc.o
KVERSION = $(shell uname -r)
modules all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
让我困惑的是 C-File 应该如何/有什么,以及如何安装新的 Modul/Kernal 并使其运行。 遗憾的是,我仍然对 Linux 了解不多,完全不知道第一步应该是什么。我知道我需要使用类似的东西
uint64_t rdtsc(){
return __rdtsc();
}
但除此之外,我完全不知所措。
【问题讨论】:
标签: c linux module linux-kernel