什么是模块化编程什么是module?
一、什么是模块化编程什么是module
现在大家已经有一个现成的Linux操作系统了,所有的开发者写的代码对于这个Linux操作系统而言都是一个模块,开发者可以模块的形式将自己的代码添加到内核,也可以从操作系统中卸载自己的模块。这种思想,在实际的开发中特别别有用。
例如:在你的设备上已经运行了一个成熟的Limux操作系统,由于客户的需求变化,你需要向这个操作系统上添加一些功能。现在你有两种做法:
名列前茅种:获得Linux源代码,然后修改,添加功能,貌似挺牛,但是如果你写的代码不能一次性到达效果,你就必须去修改,这样就每次必须重新编译内核,是不是很麻烦。最可怕的是你一不小心,把内核源码给修改错了,那该怎么办呀?
第二种:快速编写自己的功能代码,然后以模块的形式添加到Linux操作系统中,然后测试,发现不行,卸载模块,继续修改代码,添加模块(高富帅的干活方式),。。是不是比使用名列前茅种方法的苦逼程序员要轻松很多呀!
大家需要注意的是,一般我们都是通过模块化的方法向Linux操作系统添加驱动程序,那些Linux核心的代码,我个人觉得没有几个人会觉得不好,需要重新修改。
Linux 内核模块主要由以下几个部分组成:
模块加载函数(必须):当通过insmod命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块相关初始化工作;
模块卸载函数(必须):当通过rmmod命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能;
模块许可证声明(必须):模块许可证(LICENCE)声明描述内核模块的许可权限,如果不声明LICENCE,模块被加载时将收到内核被污染的警告。大多数
模块参数(可选):模块参数是模块被加载的时候可以被传递给他的值,它本身对应模块内部的全局变量;
模块导出符号(可选):内核模块可以导出符号(symbol,对应于函数或变量),这样其他模块可以使用本模块中的变量或函数;
模块作者等信息声明(可选)。
延伸阅读:
二、Linux内核打印函数printk
printk的用法和printf类似,print用于用户空间,printk用于内核空间。用printk函数时,内核会根据日志级别,可能把消息打印到当前控制台上,这个控制台通常是一个字符模式的终端、一个串口打印机或是一个并口打印机。
这些消息正常输出的前提是:日志输出级别小于console_loglevel(在内核中数字越小优先级越高)。
日志级别一共有8个级别,printk的日志级别定义如下(在include/linux/kemel.h中);
没有指定日志级别的printk语句默认采用的级别是DEFAULT_MESSAGE_LOGLEVEL(这个默认级别一般为<4>,即与KERN_WARNING在一个级别上)。
我们可以通过cat/proc/sys/kemel/printk这个文件,查看系统默认的日志级别
printk,其实不用想那么复杂,你就把它当做printf使用也可以的,在这里我们还不能测试printk输出的消息,是否能到控制台上,因为我们不知道如何编译我们的模块代码、如何加载我们的模块、如何卸载我们的模块。
猜你喜欢LIKE
相关推荐HOT
更多>>什么是webpack?
一、webpack的概念 webpack 是代码编译工具,有入口、出口、loader 和插件。webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。...详情>>
2023-10-20 22:17:55公司管理者的角色定位是什么?
1、业务指挥者管理者处于工作最前线,企业的工作任务,都要分解落实到各个部门甚至班组。通过管理者的正确指挥,才能得以实现。管理者的指挥作...详情>>
2023-10-20 20:14:29trello干什么的?
一、创建任务列表Trello的核心功能是帮助用户创建任务列表。您可以创建一个新的“看板”,然后将任务分配到各个列表中。例如,在一个应用程序开...详情>>
2023-10-20 19:40:39MySQL分表后怎么查询效率高?
一、MySQL分表后提高查询效率的方法1、查询路由根据分表规则将查询路由到特定的分表,只查询所需的分表,避免全表扫描。这可以通过应用程序或数...详情>>
2023-10-20 18:35:22热门推荐
node是什么?
沸程序员都上什么网站?
热#!/usr/bin/env python有什么用?
热什么是webpack?
新什么是模块化编程什么是module?
Python内置函数有哪些?
HTML、CSS、JavaScript分别实现什么功能?
公司管理者的角色定位是什么?
trello干什么的?
ddl文件用什么软件打开?
MySQL分表后怎么查询效率高?
mysql 不加条件查询速度挺快,加上过滤条件就特别慢是为什么?
Mybatis中,resultMap collection的应用场景是什么样子的?
endnote9的online search没有数据库选项是怎么回事?