美文网首页
Linux内核模块编程

Linux内核模块编程

作者: WebSSO | 来源:发表于2016-07-02 10:55 被阅读201次

1.必须的头文件:

<linux/kernel.h>//说明在内核编程

<linux/module.h>//说明在编写内核模块

2.针对/proc文件系统:

相关定义在<linux/proc_fs.h>

相关函数实现在/kernel source directory/fs/proc/array.c中,包括:procfile_read()、proc_dir_entry包含相应的函数指针

3、L i n u x提供了一个特殊的结构i n o d e _o p e r a t i o n s,该结构存放指向所有这些函数的指针,其中包含一个指向结构f i l e_o p e r a t i o n s的指针,结构f i l e_ o p e r a t i o n s又包含指向m o d u l e_ i n p u t和m o d u l e _o u t p u t函数的指针

4. IOCTL

在U n i x中,可以使用一个称为i o c t l的特殊函数( i o c t l是输入输出控制的英文缩写)。每个设备都有属于自己的i o c t l命令,可以是读i o c t l (从进程把信息发送到内核)、写
i o c t l (把信息返回到进程)、都有或者都没有。调用i o c t l函数必须带上三个参数:适当的设备文件的文件描述符, i o c t l编号以及另外一个长整型的参数,用户可以使用这个长整型参数来传送任何信息。

内核模块的基本组成部分:

首先定义struct file_operations {

seek函数指针

device_read函数指针

device_write函数指针

readdir函数指针

select函数指针

ioctl函数指针

mmap函数指针

device_open函数指针

flush函数指针

device_release函数指针

}

然后在init_module中注册函数,主要是通过module_register_chrdev(字符类设备)注册:major_number、名字和对应的 file_operations 对象的指针

在cleanup_module中unregister相应设备module_unregister_chrdev

相应的用户态程序处理逻辑是:

open(设备名称,模式参数如0)

然后使用ioctl()发起调用

5. <sys/syscall.h>定义了系统调用的列表

相关文章

  • Linux驱动之内核模块

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

  • Linux内核模块编程

    1.必须的头文件: //说明在内核编程 //说明在编写内核模块 2.针对/proc文件系统: 相关定义在 相关函数...

  • Linux内核模块编程

    1 总体设计思路 Linux内核是单体式结构,相对于微内核结构而言,其运行效率高,但是系统的可维护性和可扩展性较差...

  • Linux内核模块编程

    1 总体设计思路 Linux内核是单体式结构,相对于微内核结构而言,其运行效率高,但是系统的可维护性和可扩展性较差...

  • linux内核模块编程2

    1. /proc/kallsyms列出了linux内核导出的所有符号及对应的地址。 基本格式是: 逻辑地址 标识 ...

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

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

  • 1. Linux - 内核模块

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

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

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

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

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

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

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

网友评论

      本文标题:Linux内核模块编程

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