美文网首页
Linux内核模块实例

Linux内核模块实例

作者: 勤奋的大头怪 | 来源:发表于2018-01-27 16:31 被阅读0次

一个简单的内核模块来读取 timespec 数据结构的数据。
"read_kernel_time.c":

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/timekeeping.h>

struct timespec ts;

static int __init init_k_time(void)
{
    printk(KERN_INFO "Get kernel time:\n");
    ts = current_kernel_time();
    printk(KERN_INFO "ts->tv_sec: %ld\t ts->tv_nsec: %ld\n", ts.tv_sec, ts.tv_nsec);
    return 0;
}

static void __exit exit_k_time(void)
{
    printk(KERN_INFO "Exit\n");
}

module_init(init_k_time);
module_exit(exit_k_time);
MODULE_LICENSE("GPL");

"Makefile":

obj-m := read_kernel_time.o

all:
    make -C /lib/modules/`uname -r`/build M=$(PWD) modules
clean:
    make -C /lib/modules/`uname -r`/build M=$(PWD) clean

依赖的编译包:gcc, make, kernel-devel.
特殊情况,在fedora下,默认系统里没有kernel-devel包,如果此时安装的话,版本会比当前的kernel版本高,此时编译时会出现类似这样的错误:

make[1]: *** /lib/modules/4.14.13-200.fc26.x86_64/build: No such file or directory.  Stop.
make: *** [Makefile:4: all] Error 2

错误就是当前kernel版本是"4.14.13-200.fc26",但是直接用"dnf install kernel-devel"安装的版本是"4.14.14-200.fc26"。这种情况下可以用下面的命令来安装:
sudo dnf install "kernel-devel-uname-r == $(uname -r)"

Reference:
Hello, World (part 1): The Simplest Module
yum-installs-kernel-devel-different-from-my-kernel-version

相关文章

  • Linux内核模块实例

    一个简单的内核模块来读取 timespec 数据结构的数据。"read_kernel_time.c": "Make...

  • Linux驱动之内核模块

    一、Linux内核模块简介 1.1 Linux内核模块介绍 Linux内核的整体结构已经非常庞大,而其包含的组件也...

  • 编写Linux驱动程序 - 1 简单内核模块

    大多数的Linux驱动程序,都以内核模块的形式,运行在Linux内核中。 内核模块可以通过insmod/rmmod...

  • 1. Linux - 内核模块

    一、什么是内核模块 内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable ...

  • 如何防止别人卸载内核模块

    1.防卸载内核模块 不论是Windows还是Linux,当我们开发完一个内核模块的时候,内核模块中往往都承担这至关...

  • Linux设备驱动程序学习----2.内核模块与应用程序的对比

    内核模块与应用程序的对比 更多内容请参考Linux设备驱动程序学习----目录 1. 内核模块与应用程序的对比 内...

  • 一个简单的内核模块实现

    一个简单的内核模块实现 前言 这几天因为某些原因,需要学习下Linux内核模块相关的知识,今天刚刚好学习完模块的简...

  • Linux 内核模块

    1 Linux 内核模块简介 Linux 内核是一个十分庞大的系统,如何能够为其瘦身,订制适合自己应用场景的 li...

  • Linux内核模块

    Linux内核管理着一台计算机的所有资源,为上层应用程序提供统一的编程接口(系统调用),屏蔽底层设备的差异。由于不...

  • Linux内核模块

网友评论

      本文标题:Linux内核模块实例

      本文链接:https://www.haomeiwen.com/subject/oegnaxtx.html