Home  >  Article  >  Operation and Maintenance  >  What does linux module mean?

What does linux module mean?

WBOY
WBOYOriginal
2022-03-04 11:20:552823browse

In Linux, a module is a way to add device drivers, file systems and other components to the Linux kernel. It is a collection of functions and data types that can be compiled as a stand-alone program. It can be statically Or dynamically load it into the kernel space.

What does linux module mean?

#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.

What does linux module mean?

Module is a method that can add device drivers, file systems and other components to the Linux kernel. It does not require recompiling the kernel or restarting the system. For the kernel, what it needs to deal with is the loading and unloading of modules and the dependencies between modules. Because the module runs in the kernel space, the module must use the functions provided by the kernel. We can also use the module to call the corresponding kernel function, which is a method of kernel mode programming. The essence of a module file is a relocatable binary file, usually in the form of *.ko.

Linux modules can be loaded into the kernel space through static or dynamic methods. Static loading refers to loading during the kernel startup process; dynamic loading refers to loading at any time while the kernel is running. When a module is loaded into the kernel, it becomes part of the kernel code. When a module is loaded into the system, the system modifies the symbol table in the kernel and adds the resources and symbols provided by the newly loaded module to the kernel symbol table to facilitate communication between modules.

Usage of modules

Composition of modules

Linux kernel module mainly consists of the following parts:

Module loading function (Required): When the kernel module is loaded through the insmod command, the module's loading function will be automatically executed by the kernel to complete the initialization work related to this module;

Module unloading function (required): When the module is unloaded through the rmmod command , the module's unloading function will be automatically executed by the kernel, completing the opposite function to the module loading function;

Module license statement (required): The module license (LICENSE) statement describes the permissions of the kernel module. If not Declaring LICENSE, you will receive a kernel pollution warning when the module is loaded.

Module parameters (optional): Module parameters are values ​​that can be passed to the module when it is loaded. It corresponds to the global variables inside the module;

Module export symbols (optional) ): The kernel module can export symbols (symbols, corresponding to functions or variables), so that other modules can use variables or functions in this module;

Module author and other information declaration (optional).

Example of a module:

//内核头文件
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
//加载函数
static int __init init_hello_module(void){
    //内核打印函数,linux系统使用dmesg命令可以查看打印信息
    printk(KERN_INFO "Hello World\n");
    return 0;
}
//卸载函数
static void __exit exit_hello_module(void){
    printk(KERN_INFO "Exit the Hello world Module!\n");
}
module_init(init_hello_module);
module_exit(exit_hello_module);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Eric");
MODULE_VERSION("v0.1");
MODULE_DESCRIPTION("TEST FOR MODULE");

Makefile corresponding to the module:

#Makefile
obj-m:=hello.o
KERNELBUILD:=/lib/modules/$(shell uname -r)/build
all:
    make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
    make -C $(KERNELBUILD) M=$(shell pwd) clean

Related recommendations: "Linux Video Tutorial"

The above is the detailed content of What does linux module mean?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:What is qt under linuxNext article:What is qt under linux