当前位置: 首页 > news >正文

Linux内核模块

文章目录

  • 一、内核模块介绍
  • 二、模块讲解
    • 1、最简模块代码:
    • 2、模块三要素
    • 3、常用操作命令
      • 3.1、 lsmod:显示已加载模块状态
      • 3.2、 insmod:载入模块
      • 3.3、rmmod:卸载模块
      • 3.4、dmesg:显示信息
      • 3.5、modinfo:显示kernel模块的信息

一、内核模块介绍

Linux提供了一种 需要时可以被动态加载和移除的代码的机制,这种机制称为模块(Module),内核模块具有以下两个特点:

  • 模块本身不被编译入内核映像,从而使内核映像比较精简。
  • 模块被加载后,其与其它内核进程没有区别。
  • 内核模块的本质:一段隶属于内核的“动态”代码,与其它内核代码是同一个运行实体,共用同一套运行资源,只是存在形式上是独立的。

内核模块的运行是在内核空间里的。

二、模块讲解

1、最简模块代码:

#include <linux/init.h>
#include <linux/module.h>static int my_init(void){		//入口函数printk("hello world!!!\n");return 0;
}static void my_exit(void){		//出口函数printk("bye!!!\n");
}module_init(my_init);			//注册入口函数
module_exit(my_exit);			//注册出口函数
MODULE_LICENSE("GPL");			//开源GPL协议

2、模块三要素

模块三要素:
入口函数 :module_init(入口函数名);			//注册入口函数
出口函数 :module_exit(出口函数名);			//注册出口函数
MODULE_LICENSE("GPL");						//开源GPL协议

3、常用操作命令

3.1、 lsmod:显示已加载模块状态

3.2、 insmod:载入模块

3.3、rmmod:卸载模块

3.4、dmesg:显示信息

1

3.5、modinfo:显示kernel模块的信息

http://www.lryc.cn/news/264006.html

相关文章:

  • Java 栈和队列的交互实现
  • HarmonyOS应用开发者高级认证满分指南
  • CSharp中Blazor初体验
  • Linux下新建用户,并进行授权
  • STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取
  • 算法训练营Day19
  • C++数据结构——二叉搜索树详解
  • ros2机器人在gazebo中移动方案
  • 学习Java第74天,Ajax简介
  • 【Java面试题】在Java中String,Stringbuffer,StringBuilder的区别?
  • 让AIGC成为你的智能外脑,助力你的工作和生活
  • ubuntu12.04 源
  • openssl数据压缩
  • SQLturning:定位连续值范围起点和终点
  • 饥荒Mod 开发(十七):手动保存和加载,无限重生
  • Skywalking系列之最新版9.2.0-JavaAgent本地构建
  • olap/clickhouse-编译器优化与向量化
  • RK3399平台开发系列讲解(内核入门篇)网络协议的分层
  • Idea远程debugger调试
  • MATLAB - Gazebo 仿真环境
  • selenium自动化webdriver下载及安装
  • 网络基础介绍
  • Java中四种引用类型(强、软、弱、虚)
  • 【MyBatis学习笔记】MyBatis基础学习
  • 还在为论文焦虑?免费AI写作大师帮你搞定
  • 3.10【窗口】窗口使用示例(窗口缩放 三)
  • 【机器学习】密度聚类:从底层手写实现DBSCAN
  • 2023-12-20 二叉搜索树的最近公共祖先和二叉搜索树中的插入操作和删除二叉搜索树中的节点
  • pytorch文本分类(三)模型框架(DNNtextCNN)
  • <长篇文章!!>数据结构与算法的重要知识点与概要总结 ( •̀ ω •́ )✧✧临近考试和查漏补缺的小伙伴看这一篇就都懂啦~